프로세스란 ?
프로세스의 인스턴스로, 하드웨어에 있는 프로그램의 객체이다
메모리에 올라가게 됨
스택 영역 | 지역변수, 파라미터, 리턴 주소 |
---|---|
데이터 영역 | 전역변수, 정적변수 |
힙 영역 | 동적할당 |
코드영역 | 프로그램 코드 (2진수) |
프로세스 API 5가지
운영체제가 제공하는 프로세스 API 5가지
- 생성 - 프로그램 실행
- 삭제 - 프로세스 삭제
- 대기 - 프로세스 대기
- 각종 제어 - 일시중지하고 다시 시작
- 상태 - 프로세스 상태를 얻음
프로세스 생성
프로그램 코드를 메모리로 적재함 (Load)
게으른 적재 방식을 사용함
→ 모든 코드나 데이터를 메모리에 올리지 않고, 필요할 때마다 가져옴프로그램은 디스크에 실행가능 파일로 저장되어 있음
실행 시간 스택 할당
→ 지역변수, 함수 매개변수, 리턴 주소 등등의 스택영역 초기화
힙 생성
실행 도중 동적으로 요구되는 공간을 할당함 (malloc)
입출력 초기화 작업
→ 파일 기술자의 0, 1, 2 (표준입력, 출력, 에러)
I/O 또는 시그널 관련 자료구조 초기화
프로그램 시작점으로 분기하여 실행을 시작함
주로 main(), CPU는 OS가 제어함
프로세스 상태
실행 (Running)
→ CPU가 프로세스에 포함된 명령을 실행 중
준비 (Ready)
→ 실행 준비는 되어 있지만 CPU가 사용 가능하지 않은 상태
다른 프로세스가 실행중인 경우다
대기 (Blocked)
→ 프로세스가 다른 사건을 기다리는 동안, 프로세스의 실행이 중단되어 있는 상태
입출력 요청이 발생한 상태
자료구조
운영체제도 일종의 프로그램이다.
프로세스 상태를 파악하기 위한 Process List와 같은 자료구조를 가짐
프로세스 정보를 알 수 있는 레지스터 문맥 (Register Context)도 가짐
퀴즈
프로세스의 running 상태를 blocked 상태로 바꾸는 POSIX API를
하나 제시하고, 그 이유를 설명하시오.→ Read (읽기 작업) - I/O 작업을 통해 프로세스가 실행 중에서 대기 상태로 들어간다.
→ Sleep
→ Waitpid
프로세스의 blocked 상태를 ready 상태로 바꾸는 사건 (event)를
하나 제시하시오→ Waitpid 종료
→ Sleep 끝나면
→ read 다 읽으면
'Computer Science > Operating System' 카테고리의 다른 글
[OS] MLFQ (Multi-Level Feedback Queue) (0) | 2024.05.03 |
---|---|
[OS] 운영체제 스케줄링 개요 (1) | 2024.05.02 |
[OS] Limited Direct Execution (1) | 2024.05.01 |
[OS] 프로세스 API in POSIX (0) | 2024.04.30 |
[OS] 운영체제 - 가상화, 병행성, 영속성 (0) | 2024.04.28 |