티스토리 뷰
[한빛아카데미] 운영체제 책으로 학습한 내용을 정리한 것입니다.
* 프로세스(Process)
- 실행 중인 프로그램 -> 일반적인 정의
- 비동기적(Asynchronous) 행위
- 실행 중인 프로시저
- 실행 중인 프로시저의 제어 추적
- 운영체제에 들어 있는 프로세스 제어 블록(PCB)
- 프로세서에 할당하여 실행할 수 있는 개체 디스패치(Dispatch)가 가능한 대상
- 프로세스가 실행 중인 프로그램이 되려면 프로세서 점유 시간, 메모리, 파일, 입출력장치 같은 자원이 필요함
-> 프로세스를 생성하거나 실행할 때 이 자원을 할당함
* 프로세스 메모리 구조
- 스택(Stack) : 데이터를 일시적으로 저장하는 영역
- 힙(Heap) : 코드 영역과는 별도로 유지되는 자유 영역
- 데이터(Data) : 프로그램의 가상 주소 공간이며, 전역변수나 정적변수를 저장하거나 할당하고 실행하기 전에 초기화함
- 코드(Code) : 실행 명령을 포함하는 메모리거나 목적 파일에 있는 프로그램 영역
- 스택과 힙 사이는 서브루틴을 실행하는 여역으로, 운영체제로 매핑되지 않음
* 프로세스 종류
구분 | 종류 | 설명 |
역할 | 시스템(커널) 프로세스 | - 모든 시스템 메모리와 프로세서의 명령에 액세스할 수있는 프로세스 - 프로세스 실행 순서를 제어하거나 다른 사용자 및 커널(운영체제) 영역을 침범하지 못하게 감시하고, 사용자 프로세스를 생성하는 기능을 함 |
사용자 프로세스 | - 사용자 코드를 수행하는 프로세스 | |
병행 수행 방법 | 독립 프로세스 | - 다른 프로세스에 영향을 주지 않거나 다른 프로세스의 영향을 받지 않으면서 수행하는 병행 프로세스 |
협력 프로세스 | - 다른 프로세스에 영향을 주거나 다른 프로세스에서 영향을 받는 병행 프로세스 |
* 프로세스 상태 변화
상태 변화 | 표기 방법 | 설명 |
1. 준비 -> 실행 | dispatch(프로세스 이름) | - 준비 큐 맨 앞에 있던 프로세스가 프로세서를 점유하는 것 |
2. 실행 -> 준비 | timeout(프로세스 이름) | - 운영체제는 실행 상태의 프로세스가 프로세서를 계속 독점하지 않도록 인터럽트 클록(Interrupt Clock)을 두어 특정 프로세스가 할당된 시간 동안만 프로세서를 점유하게 함 - 프로세스가 일정 시간이 지나도, 즉 타임아웃 되어도 프로세서를 반환하지 않으면 클록이 인터럽트를 발생시켜 운영체제에 프로세서 제어권을 부여함 - 실행 상태의 프로세스는 준비 상태가 되고, 준비 리스트의 첫번째 프로세스가 실행 상태가 됨 |
3. 실행 -> 대기 | block(프로세스 이름) | - 할당된 시간 이전에 실행 상태의 프로세스에 입출력 연산 등이 필요하거나 새로운 자원 요청 등의 문제로 프로세서를 스스로 양도하면 대기 상태가 됨 |
4. 대기(보류) -> 준비 | wakeup(프로세스 이름) | - 프로세스는 입출력 작업이 끝나면 깨움으로 대기에서 준비 상태가 됨 |
* 프로세스 제어 블록(Process Control Block, PCB)
- 특정 프로세스 정보를 저장하는 데이터 블록이나 레코드
- 작업 제어 블록(TCB, Task Control Block)이라고도 함
- 프로세스 식별자 : 각 프로세스의 고유 식별자(숫자, 색인 항목)
- 프로세스 상태 : 생성, 준비, 실행, 대기, 중단 등 상태 표시
- 프로그램 카운터 : 프로세스를 실행하는 다음 명령의 주소 표시
- 레지스터 저장 영역 : 누산기, 인덱스, 레지스터, 스택 포인터, 범용 레지스터, 조건 코드 등 정보로, 컴퓨터 구조에 따라 수나 형태가 다름, 인터럽트가 발생하면 프로그램 카운터와 함께 저장하여 재실행할 때 원래대로 복귀할 수 있게 됨
- 프로세서 스케줄링 정보 : 프로세스의 우선순위, 스케줄링 큐의 포인터, 기타 스케줄 매개변수
- 계정 정보 : 프로세서 사용 시간, 실제 사용 시간, 사용 상한 시간, 계정 번호, 작업이나 프로세스 번호 등
- 입출력 상태 정보 : 특별한 입출력 요구 프로세스에 할당된 입출력장치, 열린 파일 리스트 등
- 메모리 관리 정보 : 운영체제가 사용하는 메모리 시스템에 따른 상한/하한 레지스터(경계 레지스터), 페이지 테이블이나 세그먼트 테이블 값 등
* 프로세스 문맥 교환(Process Context Switching)
- 인터럽트나 시스템 호출 등으로 실행 중인 프로세스의 제어를 다른 프로세스에 넘겨 실행 상태가 되도록 하는 것
[문맥 교환 순서]
1) CPU 코어를 다른 프로세스로 교환
2) 현재 프로세스의 상태를 저장
3) 다른 프로세스의 상태를 복원
'개인공부 > 운영체제' 카테고리의 다른 글
[운영체제] 병행 프로세스와 상호배제 (0) | 2023.11.29 |
---|---|
[운영체제] 스레드(Thread) (0) | 2023.11.27 |
[운영체제] 운영체제의 개념 (0) | 2023.11.27 |
[운영체제] 컴퓨터 시스템의 동작 (0) | 2023.11.24 |
[운영체제] 컴퓨터 하드웨어의 구성 (0) | 2023.11.24 |