요약
- 핵심 아이디어 한 줄 요약
- “이 노트는 왜 중요한가?” → 맥락 설명
본문
- 일반적으로 프로세스는 실행중인 프로그램으로 정의한다.
- CPU는 가상화를 통해 마치 적은 수의 CPU만으로도 그 보다 더 많은 CPU가 존재하는 것 같은 환상을 만들어낸다. 이러한 기법은 다른 말로 "시분할"이라고 함
- CPU에서 가상화를 잘 구현하기 위한 방법으로 저수준의 도구와 고차원의 지능을 필요로하는데 저수준 도구를 메커니즘(ex context switch), 고수준의 지능을 정책(ex scheduling policy)이라고 함
- 프로세스
- 프로세스의 구성 요소를 이해를 위해 하드웨어에 대한 상태를 이해하는 것이 도움이 된다.
- 메모리: 명령어와 데이터는 메모리에 저장된다.
- 레지스터: 명령어들이 레지스터를 직접 읽거나 갱신한다.
- 프로그램 카운터: 프로그램의 어느 명령어가 실행 중인지를 알려준다.
- 스택 포인터, 프레임 포인터: 함수의 변수와 리턴 주소를 저장하는 스택을 관리할 때 사용하는 레지스터
- 영구장치(persistenc storage): 프로세스가 열어 놓은 파일 목록
- 운영체제에서는 프로세스 조작 API를 다음과 같이 제공한다.
- 생성
- 제거
- 대기
- 각종 제어
- 상태
- 프로그램은 어떻게 프로세스로 변형되는가?
- 프로그램 코드와 정적 데이터를 메모리, 프로세스 주소 공간에 탑재
- 일정량의 메모리가 프로그램의 실행시간 스택으로 할당되어야함
- 운영체제는 프로그램의 힙을 위한 메모리 영역을 할당함
- 입출력과 관련된 초기화 작업을 수행함
- Unix에서는 각 프로세스가 표준 입력, 표준 출력, 표준 에러에 해당하는 파일 디스크립터를 가짐
- 프로그램의 시작지점 main에서부터 프로그램을 시작함
- 프로세스 상태
- 실행: 프로세스는 프로세서에서 실행
- 준비: 실행 준비는 되어 있지만 대기
- 대기: 프로세스가 다른 사건을 기다리는 동안 프로세스 수행을 중단
참고
- 프로세스의 개념
- OSTEP