Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
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 31
Tags
more
Archives
Today
Total
관리 메뉴

Be realist

3. 프로세스 본문

Operating System

3. 프로세스

realist 2018. 4. 16. 03:26
프로세스의 구성
 
텍스트 -> 프로그램 코드
현재 상태 -> 프로그램 카운터 등 현재 프로세서의 레지스터 값
스택 -> 일시 데이터(파라미터, 복귀주소, 지역변수 등) 저장
데이터 부분 -> 광역 변수 저장

프로그램 자체는 프로세스가 아님! 
여러 프로세스가 같은 프로그램과 관련되어 있어도 서로 같은 것으로 간주하지 않는다. 

프로세스 상태도 숙지, 유닉스 프로세스의 상태도(참고)



단일 프로세스 시스템에서는 현재 실행 상태에 있을 수 있는 프로세스는 오직 하나 뿐!
하지만, 많은 프로세스가 대기 또는 준비완료 상태에 있을 수 있다. 

대기중인 프로세스는 현재 프로세서가 실행할 프로세스가 없더라도 실행될 수 없다. 

PCB

프로세스 제어 블록에는 다음과 같은 정보들이 유지된다.
- 프로세스 상태 : 생성중, 실행중, 대기중, 준비완료, 종료
- 프로그램 카운터 : 다음에 실행할 명령어의 주소
- CPU 레지스터 : 실행중 상태에서 대기중 또는 준비중으로 변경될 때 현재 레지스터의 값을 여기에 보관한다.
- CPU 스케줄링 정보 : 우선순위와 같은 스케줄링에 필요한 정보
- 주기억장치 관리 정보 : 기준 레지스터와 한계 레지스터의 값과 같은 주기억장치 관리에 필요한 정보
- 회계 정보 : CPU 사용 시간과 같은 통계 정보
- 입출력 상태 정보 : 프로세스에 할당된 입출력 장치, 프로세스가 연 파일 목록 등 

프로세스의 단일 실행 흐름을 thread 라 한다. 
최근에는 하나의 프로세스가 여러 실행 흐름을 가질 수 있도록 하였다. 따라서 프로세스는 한번에 여러 작업을 수행할 수 있다.

프로세스 스케줄링 

시분할 시스템의 목적은 프로세스를 빈번하게 바꾸어 가면서 실행하여 사용자들이 프로그램과 상호작용할 수 있도록 하는 것! 
다중 프로그래밍의 목적은 항상 실행할 프로세스가 있도록 하는것, 이를 통해 CPU 사용 효율을 높인다. 

프로세스의 스케줄링을 위해 운영체제는 여러 종류의 큐를 유지한다. 
큐는 일반적으로 연결리스트로 구현되어 있다. 

큐의 종류

작업 큐 (job queue) ㅣ 프로세스가 시스템에 처음 들어와서 대기하는 큐 (컴퓨터 시스템에 존재하는 모든 프로세스를 관리)
준비완료 큐 (ready queue) ㅣ 주기억장치에 적재되어 실행을 기다리는 프로세스를 유지하는 큐
장치 큐 (device queue) ㅣ 장치를 사용하기 위해 기다리는 큐, 각 장치는 자신만의 장치 큐를 가지고 있다.
대기 큐 (waiting queue) ㅣ 특정한 사건마다 그 사건을 기다리는 프로세스를 유지하는 큐를 사용할 수 있다. 

예시를 통해 정확하게 공부해봐야겠음..! 

mode switch : 사용자 모드에서 커널 모드로 변경될 때 발생!, 완전 문맥 전환이 필요하지 않고 시스템 스택을 사용한다. (시스템 호출)
process switch : 현재 실행 중인 프로세스를 중단하고 새 프로세스를 실행할 때 발생. 완전 문맥 전환 필요! 

각 큐마다 다음 차례의 프로세스를 결정하여 주는 스케줄러가 있다. 

장기 스케줄러(작업 스케줄러) : 하드디스크에서 메모리로 프로세스를 로드하는 역할. (전체 프로세스에서 레디큐 안에 들어갈 프로세스를 선택)
멀티프로그래밍의 정도를 조절한다, 단기 스케줄러에 비해 invoke frequency가 길다. (초, 분단위)

단기 스케줄러(CPU 스케줄러) : 레디큐 안에서 CPU에 할당하여 실행할 프로세스를 결정한다. 

단기 스케줄러는 장기 스케줄러보다 상대적으로 빈번하게 실행된다.

중기 스케줄러 : 멀티프로그래밍의 정도를 줄이고 싶을 때 쓸 수 있다. 
시분할 시스템에서는 프로세스를 메모리에서 디스크로 옮겨 당분간 실행되지 못하도록 하는 경우가 있다. 

Context switch : 실행 중인 프로세스의 상태를 보관하고 새로운 프로세스의 상태를 CPU에 적재! 프로세스의 context는 PCB에 유지된다. 
context switch에 소요되는 시간은 모두 오버헤드..! —> 특수 명령어, 레지스터 집합, 스레드 사용 으로 극복한다.
여러 프로세스를 동작시키기 위해서는 반드시 필요하다. 

IPC는 프로세스가 같은 주소 공간을 공유하지 않아도 프로세스 간에 통신하고 그들의 행동을 동기화해줄 수 있는 메커니즘을 제공한다. 

- 메시지 전달 시스템은 데이터의 공유 없이 프로세스간 통신을 할 수 있도록 해준다. 
- 기본적으로 send(msg), receive(msg) 연산을 제공한다.
- 두 프로세스간의 통신을 위해서는 통신 링크가 필요하다. 

>> 직접 통신 : 수신자 또는 송신자의 이름을 명백하게 제시. 링크는 정확하게 두 개의 프로세스만 연관된다. 두 프로세스 간에는 오직 하나의 링크만 존재한다. 
대칭 방식 : send(P, msg) 프로세스 P에게 msg를 전송한다. receive(Q, msg) 프로세스 Q로부터 를 수신한다.
비대칭 방식 : send(P, msg) 프로세스 P에게 msg를 전송한다. receive(id, msg) 임의의 어떤 프로세스로부터 msg를 수신한다. 송신한 프로세스의 이름이 id에 저장된다. 

>> 간접 통신 : 메세지는 메일박스나 포트로 전달된다. 이 방식에서 두 프로세스는 여러 개의 메일박스를 이용해서 통신할 수 있다. 두 프로세스 간 통신이 이루어지기 위해서는 메일박스를 서로 공유해야 한다. 
두 프로세스가 메일박스를 공유할 경우에만 이 두 프로세스 간에 링크가 설정된다.
링크는 여러 개의 프로세스와 연관될 수 있으며, 두 프로세스 간에는 여러 개의 링크가 존재할 수 있다. 
send(A, msg), receive(A, msg) 메일박스 A로부터 msg를 송수신한다. 

추가정리할것

자동, 명시적 버퍼링
복사본 전달 또는 주소 전달
고정 또는 가변 크기 

클라이언트-서버 시스템에서 통신

소켓
원격 프로시저 호출



'Operating System' 카테고리의 다른 글

5. 프로세스 동기화  (0) 2018.04.16
4. 스레드, 멀티스레드 프로그래밍  (0) 2018.04.16
2. 컴퓨터 시스템 구조  (0) 2018.04.16
1. 운영체제란?  (0) 2018.04.16
Operating System Concepts  (0) 2018.04.10