목록School/운영 체제 (19)
Keep going
Interprocess Communication 프로세스간의 독립적 통신할 필요 없다. 프로세스간의 협력 협력하는 process는 데이터를 서로 주고 받고 공유한다. interprocess communication 필요 cooperating process 여러 프로세스 간 데이터 공유 위함 속도 빠르게 하기 위해 분담 s/w 구현할 때 A기능은 p1이 B기능은 p2가 잘라서 모듈 나누기 IPC의 2가지 모델 shared memory message passing (메시지 전달) Producer - Consumer Problem 생산자가 물건을 창고에 넣어둠, 소비자는 물건을 창고에서 빼서 갖다 씀 컴퓨터 내부나 응용 program에서도 많이 볼 수 있음 ex) process가 스플에 printer 할 작업..

프로세스 연산 프로세스 생성 프로세스 종료 프로세스 정보 가져오거나 프로세스에 대한 정보를 값으로 지정하거나...... 프로세스 생성 프로세스가 다른 프로세스 만든다. 프로세스들은 부모 - 자식 관계인 tree 구조다. 시스템 내부에서 각 프로세스는 고유한 번호 (pid) 부여 받는다. → 운영체제는 pid로 구별한다. 한 프로세스가 다른 프로세스를 만들 때 고려할 상황(resource) p1이 어떤 자원사용하고 있는데 p2를 만들려면 p1이 쓰고 있는 자원 어떻게 될까? p1이 사용하고 있는 모든 자원을 p2와 공유해서 같이 사용 p1이 사용하고 있는 자원에 일부만 가지고 p2가 사용 p1는 자기 것 사용하고 p2는 자원 따로 할당 받아서 사용 실행 p1이 p2 만들었을 때 p1 중지되고 p2 실행 둘..

Process Scheduling ready 되어 있는 process가 여러개 있다면 어떤 프로세스에게 cpu를 줄 것인가 process scheduler : ready queue에 있는 여러가지 process 중에서 어떤 process가 다음 cpu 실행을 받을 것인가 결정함 시스템안에서 여러가지 큐 job queue - DISC에서 main memory 나올 때까지 기다리는 큐 ready queue - cpu를 받기 위해 준비된 애들이 연결 되어 있는 애들 device queues - 장치에 있는 큐 프로세스가 어떤 큐에 있는가를 기준으로 process를 나눠 볼 수있다. process 처음 생겨나면 ready queue, cpu 받으면 실행 I/O 요청 → I/O queue 할당된 시간이 지나면 r..

프로세스 개념 (Process concept) cpu가 프로그램 실행. 실행 중인 프로그램을 여러가지 이름으로 운영체제에서 불렀다. Batch System - jobs 여러개의 job을 deque에 집어 넣고 작업을 하나하나 읽어들여서 실행. 이 작업 끝나면 다음 작업 읽어 들여서 실행 Time-shared Systems - tasks 컴퓨터에 직접 사용자 online terminal로 연결해서 사용자들이 바로 사용할 수 있는 시스템으로 바뀜 이런 경우에 사용자가 실행하는 프로그램이 돌아가고 있을 때 실행중인 컴퓨터 프로그램을 task라고 부름 job, task 모두 포함하는게 process (실행 중인 program) program이 실행중이다 → cpu가 프로그램 각 명령어를 레지스터에 갖고와서 계속..
디버깅 프로그램 에러 제거 운영체제 자체 실행기록이나 사용자 프로그램 실행 기록을 로그파일로 남겨서 나중에 분석을 통해서 에러 찾기 ex) 사용자 프로그램 실행되다가 오류에 의해서 중단되면 사용자 프로그램이 실행되던 메모리 내용을 파일에다가 덮어 쓰게 되는데 core dump file 이라고 한다. 메인 메모리는 core memory라고 부른다. core dump를 이용해 디버그가 어디서, 프로그램이 어디서 중단이 됬는지와 중단이 됐을 때 각 변수의 값이 어떻게 됐는지 하는 것을 찾아볼 수 있게 된다. 사용자 프로그램 실패 → 오류 발생, 운영체제 실패 → crash 실패할 때 crash dump라는 파일 만듬. (운영체제가 실패해서 만들어진) 운영체제가 돌아갈 때 메모리 내용을 갖다 쓴 파일을 cras..

운영체제는 아주 큰 프로그램으로 개발할 때 정답은 없다. 운영체제는 시스템에 따라서 구조가 매우 다르다. 운영체제 개발할 때 좋은 방법 운영체제 개발 전 목표 세우기 사용자 측면에서 목표 - 사용하고 배우기 쉽고 안전하고 빠르면 좋음 시스템 운영에서 목표 - 구현, 설계, 유지 보수 쉽고 유연해서 쉽게 바꿀 수 있고 효율적이어야 함 목표 세우고 구현할 때 policy, mechanism 구별 하기 정책 - 무엇을 할 것인가 결정 방법 - 정책을 어떤 방법으로 구현할 것인가 정책이 정해지면 정책을 구현하는 방법은 다양하다. 정책, 방법론 구별 해놓으면 정책을 바꾸지않고 방법론을 바꾸는 것이 가능. software 공학에서 다양한 기법에 설계와 구현에 적용해야함. software engineering도 운영..

운영체제 기본 목표 - 프로그램 실행할 수 있는 환경 제공 프로그램 실행하려면 interface가 있어야 한다. 운영체제가 제공하는 기능들 서비스 사용하기 위해 사용자 Interface 사용 Command LIne (명령창) GUI 터치 스크린 Batch (옛날 이야기, 설명 거의 안함) 사용자 인터페이스를 통해 사용할 수 있는 운영체제 서비스 프로그램 실행 우리가 프로그램을 실행시킬 수 있는 서비스 프로그램 실행 되면 운영체제는 프로그램을 메인 메모리에 적재, 그 프로그램을 실행, 실행 끝나면 정리 실행하면 실행과정에서 여러가지 입출력 연산 필요 입출력 연산 제공 입출력 장치 도구, 입출력 해지 → 운영체제에 의해서 제공 파일 관련 시스템 프로그램이 실행되는 과정에서 파일의 데이터를 읽고, 쓰고, 할 ..

Traditional 컴퓨터 한대 - 사람들은 터미널을 이용해 사용 지금은 네트워크 발전 웹애 의해 서버가 있고 서버보다 힘이 약한 컴퓨터들(thin clients)이 많이 연결되서 웹을 통해 어떤 서비스를 받거나 정보를 받고 또한 모바일(thin clients)로 서버에 접속하고 있다. (portal 서비스) Mobile thin clients 와 모바일의 다른점 wireless 네트워크로 연결되므로 속도가 더 느리다. 모바일은 여러가지 device가 많이 들어간다. ( gps , accerelator화, 자이스코프..) 일반적인 클라이언트와 다르게 위치 기반 서비스 가능 ios, android 분산형 여러 개 다른 컴퓨터들, 다른 운영체제를 실행하고 있는 시스템들을 네트워크로 엮어서 하나의 전체 시스..