부모 프로세스가 자식 프로세스를 생성할 때 자식은 부모의 주소 공간을 복사함 (fork)

자식은 그 공간에 새로운 프로그램을 올림 (exec)

 

Copy-on-write : 자식 프로세스는 부모 프로세스의 code data stack을 쓰다가 write이 발생했을 때, 부모의 code data stack의 필요한 부분을 복제하여 메모리에 올린다.

프로세스 관련 시스템 콜

fork() -> 복제

exec() -> 덮어 쓰기

exit() -> 프로세스의 종료. 자식 프로세스의 경우 부모 프로세스엑 output data를 보냄 

abort() -> 부모가 자식을 강제 종료

ㄴ 자식이 자원의 할당 한계치를 넘어서는 경우

ㄴ 자식이 더 이상 필요 없는 경우

ㄴ 부모가 종료(exit)하는 경우

wait() -> 부모 프로세스에서 실행하면 Child Process가 종료될 때 까지 block(sleep)상태로 대기, 종료되면 ready상태

 

프로세스간 자원의 공유

메세지를 전달하는 방법 : message passing : 커널을 통해 메세지 전달

주소 공간을 공유하는 방법 : shared memory : 서로 다른 프로세스 간에도 일부 주소공간을 공유

'운영체제' 카테고리의 다른 글

6. 프로세스 동기화  (0) 2022.06.09
5. CPU 스케줄링  (0) 2022.06.09
3. 스레드  (0) 2022.06.09
2. 프로세스  (0) 2022.06.08
1. 컴퓨터 시스템 구조  (0) 2022.06.08

 

 

프로세스는 0번지부터 시작하는 자기 자신만의 독자적인 주소 공간을 가진다 (stack, data, code)

가상 메모리 주소를 physical memory 주소로 변환(mapping)하는 하드웨어는 MMU(memory management unit)이다.

 

MMU는 CPU 안에 있으며 base레지스터(접근할 수 있는 물리적 메모리 주소의 최소값)의 값과 limit 레지스터(논리적 주소의 범위)의 값을 이용하여 주소를 변환한다.

여기서 인터럽트 처리 코드는 시스템 콜에 의해 호출되는 인터럽트 처리 함수를 말한다.

 

어떤 프로세스가 커널을 요청을 할때 커널 함수가 호출 되는데 중간에 context 스위칭이 일어날 수도 있으므로 

프로세스마다 커널 스택이 필요하다. 이들은 커널 프로그램 stack 영역에 저장된다.

PCB

운영체제는 새로운 프로세스를 만들때 PCB를 만들고 모든 프로세스들의 PCB는 커널 프로세스 data 영역에 보관된다.

 

PCB가 저장하는 정보

1. 관리상 사용하는 정보

PID, process state, priority, 스케줄링 정보

 

2. CPU 수행 관련 하드웨어 값

PC 레지스터 값 같은거

 

3. 메모리 관련

code, data, stack 의 위치 정보

 

4. 파일 관련

파일 서술자

 

출처 : https://core.ewha.ac.kr/publicview/C0101020140318134023355997?vmode=f

프로세스 상태

1. Running

프로세스가 CPU를 점유하고 있는 상태

CPU 스케줄러에 의해 ready queue에서 특정한 프로세스를 지정

 

2. Ready 

Running 상태에서 CPU 할당시간이 끝나 Timer 인터럽트에 의해 점유를 뺏기는 경우 (preempted)

I/O 요청을 기다리던중 (Block) I/O 끝났다는 인터럽트를 받은 경우

 

3. Blocked (wait)

CPU가 있어도 instruction을 수행 할 수 없는 상태 (I/O 작업중 이거나, 프로세스 Code 부분이 메모리에 올라와 있지 않은 경우)

block된 프로세스들은 device 큐와 ready 큐에서 관리된다.

커널 data 영역에 disk I/O queue, 공유 데이터에 대한 resource queue, cpu ready queue 등이 존재하는데 blocked된 프로세스들은 PCB 링크드 리스트로 구현되어 있다.

 

4. Suspended (inactive 상태)

프로세스가 통째로 swap area로 swap out 된 상태

외부에서 resume 명령을 해주어야 살아난다.

사용자가 직접 프로세스를 정지 시킬 수도 있다.

 

 

 

 

 

 

 

 

'운영체제' 카테고리의 다른 글

6. 프로세스 동기화  (0) 2022.06.09
5. CPU 스케줄링  (0) 2022.06.09
4. 프로세스 생성  (0) 2022.06.09
3. 스레드  (0) 2022.06.09
1. 컴퓨터 시스템 구조  (0) 2022.06.08

+ Recent posts