반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Kotlin
- Kafka
- kakao
- java
- 부하 테스트
- pub.dev
- Sharding
- C언어
- flutter
- 코딩 테스트
- 코딩
- 자료구조
- c
- exception
- dip
- 코드 트리
- nGrinder
- 코딩테스트
- 코드트리
- 디프만16기
- 디프만
- Oidc
- AOP
- 연습문제
- Scaffold
- OAuth
- Redis
- Spring
- 운영체제
- depromeet
Archives
- Today
- Total
Nick Dev
[운영체제] 02. Processes 본문
반응형
해당 내용은 아주대학교 '김상훈' 교수님의
'운영체제' 수업을 바탕으로 작성되었습니다.
[목차]
- Process란?
- Program → Process
- 프로세스의 5가지 상태
- Process Hierarchy
- Process Creation - fork()
- Replace Process Image - exec()
- Process Termination
- Process 구현
1. Process란?
- 실행 프로그램의 instance
- 각 프로세스는 고유한 ID가 있다 (PID)
2. Program → Process
- disk에 저장된 Program의 code와 data는 main memory로 가져와야 실행할 수 있다
- PC(Program Counter) : 프로그램에서 어느 명령어가 실행 중인지 가리키는 register
- SP(Stack Pointer) : 함수의 변수와 리턴 주소를 저장하는 스택을 관리하는 register
- 각 프로세스는 고유한 address space가 주어진다
- 프로세스는 이 address space의 주소만 접근할 수 있다.
3. 프로세스의 5가지 상태
- new : process가 새로 생긴 상태
- ready : processor에게 할당되기를 기다리는 상태
- running : instruction이 실행되고 있는 상태
- blocked : 특정 event가 일어나기를 기다리는 상태
- exited : 실행이 끝난 상태
4. Process Hierarchy
- 한 프로세스가 또다른 프로세스를 생성할 수 있다.
- parent와 child의 관계가 형성되어 결국 프로세스 간의 관계를 tree 구조처럼 나타낼 수 있다
5. Process Creation - fork()
- 새로운 프로세스를 만들 때 현재 프로세스를 cloning해서 만든다
- 결국 child process는 parent의 address space를 duplicate 한다
- (사실 내용을 전부 복사하지 않고 memory를 share하는 방식으로 mapping만 복사한다)
- fork() 함수를 통해 현재 프로세스에서 새로운 프로세스를 만들 수 있다
- 다음은 fork() 함수의 리턴 값이다.
- parent process는 새로 생성된 child process의 PID를 return 받는다
- 새로 생긴 child process는 0을 return 받는다
- fork() 실패시 parent process에게 -1 을 return
parent | child's PID |
child | 0 |
fail | -1 |
6. Replace Process Image - exec()
- 현재 프로세스의 image를 새로운 process image로 Replace
- exec() 계열 함수들을 통해 replace
- exec() 하고나면 기존 address space는 모두 사라지고 새롭게 다시 시작
7. Process Termination
- process가 죽으면 PID와 status information을 return한다
- 이 return 값을 parent가 wait() 함수를 통해 받아줘야 된다
- parent process에서 wait() 함수는 child process의 return 값을 받기 전까지 계속 blocked 상태에 있다
- 만약 child process가 죽었지만 아무도 wait() 함수로 return 값을 회수하지 않으면 이 process는 'Zombie' process가 된다
- 만약 parent가 wait() 함수를 호출하지 않고 child 보다 먼저 죽는 경우, tree 구조이기에 parent process가 먼저 죽으면 tree 연결이 끊기게 된다. 이렇게 남겨진 child process들을 'Orphan' process라고 한다.
- Orphan process 해결 방법 2가지
- Cascading termination : parent가 죽으면 딸려 있는 children 모두 terminate ( network에서 주로 사용 )
- Reparenting : orphan process들을 모두 Init process로 입양 보낸다.
- Init process로 입양 보내는 이유 : Init process는 초기 process로, 주기적으로 wait() 함수를 호출해주기 때문이다.
8. Process 구현
- PCB(Process Control Block)
- process와 관련된 정보를 저장하는 자료구조
- OS는 PCB를 활용해 process를 스케줄링하거나 관리한다
- 대략적인 PCB에 포함된 내용과 구조
반응형
'CS' 카테고리의 다른 글
컴퓨터 구조 정리 노트( Ch 08~15 ) (1) | 2023.12.16 |
---|---|
[운영체제] 03. System Call (0) | 2023.07.04 |
[운영체제] 01. Introduction to Operating Systems (0) | 2023.06.26 |
[c로 배우는 쉬운 자료구조] 3장 연습문제 (0) | 2023.05.11 |
[c로 배우는 쉬운 자료구조] 2장 연습문제 (1) | 2023.05.11 |