티스토리 뷰
1. 프로세스 생성
• 프로세스는 새로운 프로세스를 생성할 수 있다. 생성한 프로세스를 부모프로세스 생성당한 프로세스를 자식 프로세스라하며 프로세스들은 트리를 만들어 연결된다.
• 운영체제는 프로세스를 pid에 의해 구분한다. pid 0에는 sched 프로세스가 있고 이 프로세스는 init, pageout, fsflush와 같은 프로세스들을 생성한다.
• 프로세스가 서브프로세스를 생성할 때 서브프로세스는 운영체제로부터 직접 자원을 얻거나, 혹은 부모프로세스 자원의 부분 집합을 사용한다.
• 부모 프로세스는 자원을 분할하여 자식들에게 나누어 주거나, 여러 자식들과 일부 자원을 공유할 수도 있다.
• 부모 프로세스와 자식 프로세스는 병렬로 실행될 수 있으며 부모는 자식이 죽을 때까지 기다린다.
• 자식 프로세스는 부모 프로세스의 복사본 일 수도 있고 독립적으로 새로운 프로그램을 가지고 있을 수도 있다.
2. 프로세스 생성과정
a. OS 커널에 PCB를 생성
b. 메모리 공간 할당
c. 이진 파일 적재
d. 프로그램 실행
fork()함수를 보면 fork() 호출 후 자식 프로세스는 exec()를 호출한다. exec()호출은 이진 파일을 메모리로 적재하고 적재된 프로그램을 실행한다.
3. 프로세스 종료
• 프로세스가 마지막 문장의 실행을 끝내고, exit 시스템 호출을 사용하여 운영체제에게 자신의 제거를 요청하면 종료된다.
• 종료시 프로세스의 모든 자원이 운영체제로 반납된다.
• 부모는 자식이 할당한 자원을 초가하거나 아무런 작업이 없으면 자식 프로세스를 죽일 수 있다.
• 부모가 죽었는데 자식이 살아있으면 운영체제가 해당 자식 프로세스들 모두를 죽인다. 이를 연속적 종료라고 부른다.
4. 프로세스 통신
• 프로세스가 시스템에서 실행 중인 다른 프로세스들에게 영향을 주거나 받지 않는다면 독립적인 프로세스이다. 반대는 상호 협력 프로세스이다.
• 프로세스가 통신을 하는 이유에는 정보공유, 계산 가속화, 모듈성, 편의성이다.
• 메시지 전달 모델은 충돌을 회피할 필요가 없기 때문에 적은 양의 데이터를 교환하는데 유용하다.
• 공유 메모리 모델은 속도가 빠르다.
5. 공유 메모리 시스템
• 공유메모리 영역은 공유 메모리 세그먼트를 생성하는 프로세스의 주소 공간에 위치한다.
• 통신하고자 하는 프로세스들은 세그먼트를 자신의 주소 공간에 추가해야한다.
• 무한 버퍼 : 제약이 없이 생상과 소비가 가능
• 유한 버퍼 : 비어져 있으면 소비가 불가하고 반대로 가득 차 있으면 생산이 불가능
• 공유 메모리가 읽기 전용이 아니라면 동기화를 해야함
6. 메시지 전달 시스템
• 버스와 네트워크로 다른 프로세스간 통신
• Naming - 직접 통신 : 통신시 송신자와 수신자가 명확이 정의되어 있어 두개의 프로세스간 통신만 할 수 있다.
• Naming - 간접 통신 : 메일박스라는 중간 개체를 만들어 메일박스끼리 통신을 한다. 프로세스들은 메일박스를 가질 수 있으며 여러 프로세스가 하나의 메일박스를 공유할 수 있다.
• 동기화 - 봉쇄형 송신 : 송신 후 수신자가 수신 받을 때 까지 대기
• 동기화 - 비 봉쇄형 송신 : 보내고 다음 함수 수행
• 동기화 - 봉쇄형 수신 : 메세지 올때까지 대기
• 동기화 - 비 봉쇄형 송신 : 다른 일 하다가 메시지 오면 수신
• 버퍼링 : 통신하는 프로세스들에 의해 교환되는 메시지는 임시 큐에 들어갈 수 있음
• 버퍼링 - 무용량 : 대기 공간이 0이라 송신자는 수신자가 메시지를 수신할 때까지 기다려야 한다.
• 버퍼링 - 유한 용량 : 대기 공간이 가득 차기 전까지는 NonBlocking모드로 송신하다가 큐가 가득 차면 Bloking 모드로 변경해 수신을 기다린다.
• 버퍼링 - 무한 용량 : 상대가 수신을 하지 않아도 막 보낼 수 있다.
7. Socket
• Socket : 소켓은 네트워크로 연결되어 있는 프로세스간의 통신 기술이다. IP주소로 해당 디비이스를 찾고 port로 하여 해당 프로세스를 찾는다. 바이트 스트림을 전달하는 Low-Level 통신이다.
8. RPC
• Remote Procedure Call의 약자로 원격 프로시저 호출은 별도의 원격제어를 위한 코딩없이 다른 주소 공간에서 함수나 프로시저를 실행할 수 있게 하는 프로세스간 통신 기술이다.
• RPC 시스템은 클라이언트 쪽에 스텁(stub)을 제공하여 통신을 하는데 필요한 정보를 숨겨 준다.
• 원격 프로시저마다 다른 스텁이 존재하고 클라이언트가 원격 프로시저를 호출하면 RPC가 원격프로시저에 맞는 스텁을 호출하고 필요한 매개변수를 건네준다.
• 스텁은 프로시저에게 갈 매개변수를 네트워크로 전송하기위해 적절한 형태로 재구성하는데 이를 marshall이라고 한다.
• 통신하는 장비간 데이터 표현 방식이 다를 경우를 대비해 RCP는 중립적인 데이터 표현 방식을 제공하는데 그중하나가 XDR이다.
9. Pipes
• 파이프는 FIFO 버퍼를 가지고 있다.
• 보통의 파이프는 한방향 통신으로 하나의 프로세스는 생상자, 하나의 프로세스는 소비자가 된다.
• 지명 파이프는 양방향 통신이 가능하다.
• 보통의 파이프는 오직 프로세스들이 서로 통신하는 동안에만 존재 하지만 지명 파이프는 파일 시스템의 보통 파일처럼 존재한다.
'SoftWare > OS' 카테고리의 다른 글
OS - 5. CPU Scheduling (1) (0) | 2016.04.23 |
---|---|
OS - 4. Thread (0) | 2016.04.10 |
OS - 3. Process(1) (0) | 2016.04.08 |
OS - 2. Operating System Structures(2) (0) | 2016.04.03 |
OS - 2. Operating System Structures(1) (0) | 2016.03.28 |
- Total
- Today
- Yesterday
- vim 설치
- Notification
- 카운터
- vim
- java
- 포켓몬 고
- jad
- 포켓몬 Go
- Java Decompiler
- 5582
- 테라펀딩 #투게더펀딩 #P2P투자 #부동산 소액 투자 #카카오 #토스
- counter
- php
- 인텐트
- java 파일 입출력
- 알고리즘
- c언어
- java url
- Res
- 파일입출력
- 안드로이드
- 아두이노
- 자바 입출력
- LISTVIEW
- android
- 파일 입출력
- 유전 알고리즘
- 유전
- 서버
- Service
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |