티스토리 뷰

[한빛아카데미] 운영체제 책으로 학습한 내용을 정리한 것입니다.

 

* 프로세스(Process)

- 실행 중인 프로그램 -> 일반적인 정의

- 비동기적(Asynchronous) 행위

- 실행 중인 프로시저

- 실행 중인 프로시저의 제어 추적

- 운영체제에 들어 있는 프로세스 제어 블록(PCB)

- 프로세서에 할당하여 실행할 수 있는 개체 디스패치(Dispatch)가 가능한 대상

- 프로세스가 실행 중인 프로그램이 되려면 프로세서 점유 시간, 메모리, 파일, 입출력장치 같은 자원이 필요함

-> 프로세스를 생성하거나 실행할 때 이 자원을 할당함

 

* 프로세스 메모리 구조 

출처 : https://velog.io/@mino0121/CSAlgorithm-Study-OS-Memory-structure

 

 

- 스택(Stack) : 데이터를 일시적으로 저장하는 영역

- 힙(Heap) : 코드 영역과는 별도로 유지되는 자유 영역

- 데이터(Data) : 프로그램의 가상 주소 공간이며, 전역변수나 정적변수를 저장하거나 할당하고 실행하기 전에 초기화함

- 코드(Code) : 실행 명령을 포함하는 메모리거나 목적 파일에 있는 프로그램 영역

- 스택과 힙 사이는 서브루틴을 실행하는 여역으로, 운영체제로 매핑되지 않음

 

* 프로세스 종류

구분 종류 설명
역할 시스템(커널) 프로세스 - 모든 시스템 메모리와 프로세서의 명령에 액세스할 수있는 프로세스
- 프로세스 실행 순서를 제어하거나 다른 사용자 및 커널(운영체제) 영역을 침범하지 못하게 감시하고, 사용자 프로세스를 생성하는 기능을 함
사용자 프로세스 - 사용자 코드를 수행하는 프로세스
병행 수행 방법 독립 프로세스 - 다른 프로세스에 영향을 주지 않거나 다른 프로세스의 영향을 받지 않으면서 수행하는 병행 프로세스
협력 프로세스 - 다른 프로세스에 영향을 주거나 다른 프로세스에서 영향을 받는 병행 프로세스

 

* 프로세스 상태 변화

출처 : https://velog.io/@0mi/프로세스의-개념-구조-상태-변화

상태 변화 표기 방법 설명
1. 준비 -> 실행 dispatch(프로세스 이름) - 준비 큐 맨 앞에 있던 프로세스가 프로세서를 점유하는 것
2. 실행 -> 준비 timeout(프로세스 이름) - 운영체제는 실행 상태의 프로세스가 프로세서를 계속 독점하지 않도록 인터럽트 클록(Interrupt Clock)을 두어 특정 프로세스가 할당된 시간 동안만 프로세서를 점유하게 함
- 프로세스가 일정 시간이 지나도, 즉 타임아웃 되어도 프로세서를 반환하지 않으면 클록이 인터럽트를 발생시켜 운영체제에 프로세서 제어권을 부여함
- 실행 상태의 프로세스는 준비 상태가 되고, 준비 리스트의 첫번째 프로세스가 실행 상태가 됨
3. 실행 -> 대기 block(프로세스 이름) - 할당된 시간 이전에 실행 상태의 프로세스에 입출력 연산 등이 필요하거나 새로운 자원 요청 등의 문제로 프로세서를 스스로 양도하면 대기 상태가 됨
4. 대기(보류) -> 준비 wakeup(프로세스 이름) - 프로세스는 입출력 작업이 끝나면 깨움으로 대기에서 준비 상태가 됨

 

* 프로세스 제어 블록(Process Control Block, PCB)

- 특정 프로세스 정보를 저장하는 데이터 블록이나 레코드

- 작업 제어 블록(TCB, Task Control Block)이라고도 함

출처 : https://m.blog.naver.com/jk130694/220690136194

- 프로세스 식별자 : 각 프로세스의 고유 식별자(숫자, 색인 항목)

- 프로세스 상태 : 생성, 준비, 실행, 대기, 중단 등 상태 표시

- 프로그램 카운터 : 프로세스를 실행하는 다음 명령의 주소 표시

- 레지스터 저장 영역 : 누산기, 인덱스, 레지스터, 스택 포인터, 범용 레지스터, 조건 코드 등 정보로, 컴퓨터 구조에 따라 수나 형태가 다름, 인터럽트가 발생하면 프로그램 카운터와 함께 저장하여 재실행할 때 원래대로 복귀할 수 있게 됨

- 프로세서 스케줄링 정보 : 프로세스의 우선순위, 스케줄링 큐의 포인터, 기타 스케줄 매개변수

- 계정 정보 : 프로세서 사용 시간, 실제 사용 시간, 사용 상한 시간, 계정 번호, 작업이나 프로세스 번호 등

- 입출력 상태 정보 : 특별한 입출력 요구 프로세스에 할당된 입출력장치, 열린 파일 리스트 등

- 메모리 관리 정보 : 운영체제가 사용하는 메모리 시스템에 따른 상한/하한 레지스터(경계 레지스터), 페이지 테이블이나 세그먼트 테이블 값 등

 

* 프로세스 문맥 교환(Process Context Switching)

- 인터럽트나 시스템 호출 등으로 실행 중인 프로세스의 제어를 다른 프로세스에 넘겨 실행 상태가 되도록 하는 것

 

[문맥 교환 순서]
1) CPU 코어를 다른 프로세스로 교환
2) 현재 프로세스의 상태를 저장
3) 다른 프로세스의 상태를 복원

출처 : https://velog.io/@hkh1213/OS-Context-Switching문맥교환

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/06   »
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
글 보관함