프로세스
: 실행 중인 프로그램
: 프로그램이 실행되는 것을 추상화한 것
|
프로세스 API - System Call
1. 생성 (Create)
- fork
- 새로운 프로세스 생성(자식 프로세스)
- 물리적 공간에서 메모리 복사 수행
- 부모 프로세스와 자식 프로세스가 완전히 동일하지는 않다.
- 고유한 PID
- fork로부터 부모 프로세스는 자식 프로세스의 PID, 자식 프로세스는 0을 반환 받는다.
2. 제거 (Destory)
3. 대기 (Wait)
- wait
- 부모 프로세스의 실행을 잠시 중지
- 순서가 정해진다. (자식 프로세스 먼저 실행 후 부모 프로세스 실행)
- 자식 프로세스의 exit status 값을 가져오는 역할도 한다.
4. 각종 제어 (Miscellaneous Control)
- exec
- 다른 프로그램 실행
- fork로 생성된 실행 환경에 다른 명령을 실행하도록 한다.
5. 상태 (Status)
프로세스 상태
- 실행(Running): CPU에 의해 프로그램이 처리되고 있는 상태
- 준비(Ready): 프로그램이 메모리에 탑재되고 실행할 준비도 됐지만 사용할 CPU가 없어서 실행되지 못하는 상태
- 대기(Blocked): CPU가 메모리 영역을 벗어난 상태(ex. I/O 요청 등)일 때 프로세스의 수행을 중단하는 것
|
기법
LDE (제한적 직접 실행 원리)
- 프로그램을 CPU 상에서 직접 실행시키는 것
- 프로그램 시작 시 프로세스 목록에 해당 프로세스 항목을 만들고 메모리를 할당하며 프로그램 코드를 디스크에 탑재하고 진입점을 찾아 그 지점으로 분기하여 사용자 코드를 실행
- trap 명령어: 커널 모드로 진입하기 위한 명령어
- return-from-trap: 사용자 모드로 돌아가기 위한 명령어
- 사용자 모드(user mode)
- 할 수 있는 일이 제한된다.
- 커널 모드(kernel mode)
- 모든 작업을 수행할 수 있다.
- 특권 명령어
- 시스템콜(System Call)
- 사용자 프로세스에게 제한 작업의 실행을 허용하기 위해 제공
- 트랩 핸들러(trap handler)
- Exception: CPU-Memory 사이의 내부 에러
- ex) %0, page fault
- Interrupt: 외부 에러, 외부 기계 장치에 의한 에러
- System Call: SW trap
- 문맥 교환(Context Switch): 현재 실행 중인 프로세스의 레지스터 값들을 커널 스택 같은 곳에 저장하고 새로이 실행될 프로세스의 커널 스택으로부터 레지스터 값을 복원하는 것
※ 국민대학교 소프트웨어학부 황선태 교수님의 운영체제 교과목을 공부하며 정리한 내용입니다.
728x90
반응형
'OS' 카테고리의 다른 글
[OS] Paging (0) | 2024.03.30 |
---|---|
[OS] Free-Space Management (0) | 2024.03.29 |
[OS] Segmentation (0) | 2024.03.29 |
[OS] Address Space & Address Translation (2) | 2024.03.29 |
[OS] Scheduling (2) | 2024.03.28 |