[ OSTEP ] 정리 모음집
" OS공부를 위한, 램지 H. 아파시 뒤소의 OSTEP 을 읽고 내용 요약 / 정리 "
" 프로세스는 간단히 말하면 실행 중인 프로그램! "
프로세스 구현에 필요한 기법, 구현한 프로세스를 스케줄링하는 정책 등을 알아보고, 여러 방법들을 조합하여 운영체제가 CPU를 가상화하는 방식을 이해하자.
실행을 위한 명령어와정적 데이터의 묶음
- 이 명령어와 데이터 묶음을 읽고 실행하여 프로그램에 생명을 불어넣는 것이 운영체제
디스크 상에 존재
시분할(Time Sharing)
이라고 한다.📢 현대 모든 운영체제들은 시분할 기법 중 문맥 교환(Context Switch)
을 사용 한다!
📢 CPU의 가상화를 통해 여러 프로그램을 실행할 수 있게되었는데...
많은 프로그램 중 어떤 프로그램을 먼저 실행되고, 다음에는 어떤 프로그램을 실행되는거지..?
- 운영체제 중 스케줄링 정책(Scheduling Policy)에 의해 결정
-과거정보
,워크로드에 관한 지식
,성능 측정 결과
등을 토대로 결정된다
-정책(Policy)
: 운영체제의 지능, 운영체제 내에서 어떤 결정을 내리기 위한 알고리즘
과거 정보
- 예) 직전 1분 동안 어떤 프로그램이 자주 실행 되었는지
워크로드에 관한 지식
- 예) 어떤 유형의 프로그램들이 실행되었는지
성능 측정 결과
- 예) 시스템이 대화 성능 혹은 처리량을 높이려 하는지
[ 하드웨어 상태(Machine State) 구성 요소 ]
- 메모리
- 명령어, 실행 프로그램이 읽고 쓰는 데이터가 저장되는 영역
- 프로세스가 접근할 수 있는 메모리는 프로세스를 구성하는 요소
- 레지스터
- 많은 명령어가 레지스터를 직접 읽거나 갱신 함
- 프로세스를 실행하는 데 레지스터도 사용[ 하드웨어 상태를 구성하는 특별한 레지스터 ]
프로그램 카운터(Program Counter, PC)
- 프로그램의 어느 명령어가 실행 중인지 알려주는 레지스터스택 포인터(Stack Pointer) & 프레임 포인터(Frame Pointer)
- 함수의 변수와 리턴 주소를 저장하는 스택을 관리할 때 사용하는 레지스터
- 영구 저장장치(Persistent stroage)
- 프로세스가 현재 열어 놓은 파일 목록을 가진 입/출력 정보
생성(Create)
- 새로운 프로세스를 생성할 수 있는 방법
- ex) 쉘에 명령어 입력, 프로그램 아이콘을 더블 클릭하여 프로그램 실행 등
제거(Destroy)
- 프로세스를 강제로 제거할 수 있는 방법
- 대부분의 프로세스는 실행되고 할 일을 다하면 스스로 종료하지만, 그러지 못한 프로세스는 사용자가 제거하길 원할 것, 필요없는 프로세스를 중단시키는 API는 매우 유용함
대기(Wait)
- 어떤 프로세스의 실행 중지를 기다릴 필요가 있기 때문
각종 제어(Miscellaneous Control)
- 프로세스 제거, 대기 외 여러가지 기능들
- ex) 프로세스 일시정지 / 재개 등
상태(Status)
- 프로세스가 얼마 동안 실행되었는지, 어떤 상태에 있는지 등이 포함된 프로세스 상태 정보를 얻는 기능
운영체제가 프로그램 코드와 정적 데이터를 프로세스의 주소 공간에 탑재
- 초기 운영체제들은 코드와 데이터를 모두 메모리에 탑재했지만 현대 운영체제는 코드나 데이터를 필요할 때 필요한 부분만 메모리에 탑재한다
- [ 가상 메모리 / 페이징, 스와핑 기법 ] 참조
운영체제가 프로그램의 실행시간 스택 용도로 일정량의 메모리 할당
- 지역 변수, 함수 인자, 리턴 주소 등을 저장하기 위한 스택 영역
운영체제가 프로그램의 힙을 위한 메모리 영역 할당
- 동적 할당 데이터를 위한 힙 영역
운영체제가 입출력과 관계된 초기화 작업 수행
운영체제가 CPU를 새로 생성된 프로세스에게 넘기게 되면 프로그램이 실행된다!
실행
, 준비
, 대기
상태 중 하나로 존재함 운영체제도 일종의 프로그램으로 다른 프로그램들과 같이 다양한 정보를 유지하기 위한 자료 구조를 가지고 있다
프로세스 리스트
- 운영체제가 가진 자료 구조 중 하나
- 프로세스 상태를 파악하기 위해 준비 상태의 프로세스들을 위한 자료 구조
운영체제가 프로세스를 추적하기 위해 필요로 하는 정보들
- [ 참고 사진 / xv6 Proc 구조 ] : 대부분의 운영체제들도 이와 비슷한 프로세스 구조를 갖고 있음