일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- window11
- window10
- 취업
- vmware workstation player
- Spring Boot
- 오블완
- window11 Education
- 정처기
- window10 Education
- 방송대
- github
- ObjectMapper
- 취성패
- git
- 런던뮤지컬
- git pull --rebase
- java
- git pull
- camel case
- IAMPORT
- 아임포트
- 소비통장
- 자바
- snake case
- 방통대
- 윈도우10 Education
- git 설정
- 티스토리챌린지
- 운영체제
- json string
- Today
- Total
홍차의 미로찾기
[방통대/운영체제] 프로세스란? 본문
<1. 프로세스>
1-1. 프로세스란?
- 실행 중인 프로그램
- 작업 관리자를 열면 내 컴퓨터의 프로세스를 확인할 수 있음.
★1-2. 프로세스와 프로그램 차이
프로그램 | 프로세스 |
exe 파일과 같은 정적파일 | 실행 중인 프로그램 |
동작을 하지 않는 정적·수동적 개체 | 동작을 하는 능동적 개체 |
- 프로그램을 클릭하여 실행하면 프로세스ID가 부여되면서 프로세스가 됨.
1-3. 프로세스의 동작
운영체제로부터 자원을 할당 받아 동작함.
- 자원 종류 : CPU, 메모리, 입출력 장치, 파일 등
- 동작 : CPU가 프로세스의 명령을 실행하는 것
1-4. 프로세스 종류
1. 사용자 프로세스
2. 시스템 프로세스
<2. 프로세스와 운영체제>
2-1. 운영체제 (프로세스와 운영체제 관계)
프로세스 관리자의 역할을 함
- 프로세스 생성 및 삭제를 담당
- 프로세스 실행을 위한 스케줄 결정
(프로세스 실행 : CPU 할당을 의미)
- 프로세스 상태를 관리
- 프로세스 상태 전이를 처리
<3. 프로세스의 상태>
3-1. 프로세스 상태 (5-상태 모델)
생성 | 처음 작업이 주어진 상태 | ||
준비 | 실행 준비가 되어 CPU할당을 기다리는 상태 - 생성 or 실행 or 대기 중인 프로세스 모두 준비 단계 변경 가능 |
||
실행 | 프로세스가 처리되는 상태 - 준비 중인 프로세스만 실행 가능 |
||
대기 | 프로세스가 특정 자원을 할당 받을 때까지 또는 IO 작업이 끝날 때까지 작업이 보류되는 상태 - 실행 중인 프로세스만 대기 가능 (실행 대기라고 생각하자) |
||
종료 | 모든 처리가 완료되어 사용자에게 반환되는 상태 |
디스패치 : CPU 할당 과정 (준비 -> 실행)
이벤트 대기 : 특정 작업을 기다리며 CPU는 쓰지 않음 (실행 -> 대기)
재개 조건 만족 : 기다리던 작업을 할 수 있게되면 다시 준비 단계로! (대기 -> 준비)
<4. 프로세스 제어 블록>
4-1. 프로세스 제어 블록 (Process Control Block, PCB)
- 프로세스 관리를 위한 목적
- 프로세스의 정보를 보관
- 각 프로세스마다 PCB 존재
- 프로세스가 진행함에 따라 내용이 변경됨
(아래 이미지와 같은 내용들이 존재)
※ PC (프로그램 카운터)
- 중앙 처리 장치 내부에 있는 레지스터 중의 하나.
- 다음에 실행 될 명령어의 주소를 가지고 있다.
(프로세스가 잠시 대기해도 다음에 어떤 작업을 실행해야 할 지 알 수 있음)
<5. 프로세스 생성과 종료>
5-1. 프로세스의 생성 방법
시스템 호출
5-2. 프로세스 생성 작업
① 프로세스의 이름(번호, PID) 결정
② 준비 큐에 삽입
③ 초기 우선순위 부여
④ 프로세스 제어 블록(PCB) 생성
5-3. 프로세스 생성 시스템 호출
하나의 프로세스가 새로운 프로세스 생성
-> 생성 시스템 호출을 통해 생성 (ex. fork() )
- 호출하는 프로세스 : 부모 프로세스
- 생성되는 프로세스 : 자식 프로세스
※ 부모 프로세스가 가능한 프로세스 종류
- 시스템 / 사용자 프로세스 모두 가능
즉, 둘 다 새로운 프로세스 호출 가능
-> 응용프로그램과 같은 사용자 프로세스도 새로운 프로세스 생성이 가능하다는 의미)
5-4. 생성되는 프로세스의 자원 종류 (새로운 프로세스의 자원은 어디로부터 오는가)
① 운영체제로부터 직접 얻음
② 부모 프로세스 자원의 일부를 얻음
-> 자식 프로세스의 자원은 부모 프로세스의 자원으로 제한함.
(과도한 자식 프로세스의 생성으로 인한 시스템 과부하 방지를 위해)
5-5. 프로세스의 종료
- 프로세스의 마지막 명령이 실행을 마치는 경우
- 프로세스 종료 시스템 호출(예: exit())을 통하는 경우
- 프로세스 종료 후 부모 프로세스에게 실행 결과를 되돌려줌
5-6. 프로세스 종료 시스템 호출 조건
- 부모에 의해서만 호출됨
- 자식 프로세스가 할당된 자원의 사용을 초과할 때
- 자원이 더이상 필요치 않을 때
<6. 프로세스 간의 관계>
6-1. 프로세스 간의 관계
독립적 프로세스 | 유기적 프로세스 | |
의미 | 다른 프로세스의 영향을 받지도 않고 주지도 않음 |
다른 프로세스와 영향을 주고 받음 |
프로세스 상태 | 다른 프로세스와 공유 X | 다른 프로세스와 공유 O |
실행 | - 결정적 (입력이 동일하면 결과도 동일) - 재생 가능 (다시 실행해도 같은 결과 나옴) |
- 비결정적 (동일한 입력이라도 결과가 달라질 수 있음) - 재생 불가능 (다시 실행해도 같은 결과 불가능) |
다른 프로세스와 무관하게 중단 및 재시작 가능 | ||
데이터 | 다른 프로세스와 데이터 공유 X | 다른 프로세스와 데이터 공유 O |
'공부 > 운영체제' 카테고리의 다른 글
[방통대/운영체제] 3. 운영체제의 유형 (일괄처리/대화형/실시간/하이브리드) (0) | 2022.03.13 |
---|---|
[방통대/운영체제] 1. 하드웨어 제어 및 CPU 동작 모드 (0) | 2022.03.13 |
[방통대/운영체제] 2. 커널(Kernel) 이란? (0) | 2022.03.13 |
[방통대/운영체제] 스케줄링 단계와 정책 (0) | 2022.03.13 |
[방통대/운영체제] 스레드(thread)란? (0) | 2022.03.13 |