전공 수업 내용 정리 (문제 발생시 비공개합니다.)

실행 모드
대부분의 프로세서는 두 가지 이상의 실행 모드를 지원
모드 | 연산자 | 메모리 | CPU 레지스터 |
---|---|---|---|
커널(시스템) | 모든 연산자 실행 | 모든 곳 접근 | 모든 레지스터 접근 |
유저 | 연산자 특권 없음 | 내 메모리 영역만 | 특수 레지스터 없음 |
모드 스위치
모드 스위치는 현재 실행 중인 프로세스의 상태를 변경하지 않고 사용자 모드와 커널 모드 간에 프로세서를 전환할 수 있다.
이 과정에는 모드 컨텍스트 저장/복원에 따른 오버헤드가 포함됨.
인터럽트 | 비동기적인 외부 예외 |
---|---|
트랩 | 현재 명령어 실행 |
시스템 호출 | 요청에 의해 |
모드 스위치의 주요 원인
- 인터럽트: 비동기적인 외부 예외
- 트랩: 현재 명령어 실행 중 발생
- 시스템 호출: 프로그램의 요청에 의해 발생
프로세스 컨텍스트와 인터럽트 컨텍스트
- 프로세스 컨텍스트: 프로그램이 시스템 호출을 실행하거나 예외를 트리거할 때 발생. 커널이 "프로세스를 대신하여 실행"한다고 표현.
- 인터럽트 컨텍스트: 인터럽트 핸들러 실행 시 발생. 프로세스와 연결되지 않으며, 빠르고 간단하게 처리되어야 함. 절전 모드로 전환 불가.
프로세스 생성
프로세스 생성 이유:
- 새로운 일괄 처리 작업
- 대화형 로그온
- 운영체제의 서비스 제공
- 기존 프로세스에 의한 생성(스포닝)
프로세스 생성 방법:
- Directed 방식
- Cloning 방식 (프로세스 스포닝): 부모 프로세스의 복제본인 자식 프로세스 생성, 이후 프로세스의 기계코드, 데이터, 힙, 스택이 새로운 프로그램에 의해 재배치됨 = exec, 이때 프로세스 식별자(PID)는 바뀌지않음!

Copy On Write (COW)

부모 프로세스의 페이지를 자식 프로세스와 공유하다가, 데이터 변경 시에만 새로운 페이지를 할당하는 기법
이를 통해 새롭게 할당되는 페이지를 최소화할 수 있다.
프로세스 종료
- 자발적 종료(Voluntary termination):
exit()
함수를 통해 명시적으로 종료 - 비자발적 종료(Involuntary termination): 부모 프로세스나 OS에 의해 강제 종료 ex.
kill
함수
좀비 프로세스와 고아 프로세스
- 좀비 프로세스: 종료되었으나 부모 프로세스가 종료 상태값을 가져가지 않은 프로세스
- 고아 프로세스: 부모 프로세스가 자식 프로세스보다 먼저 종료된 경우
Reaping
부모 프로세스가 wait()
함수를 통해 자식 프로세스의 종료 상태를 가져가고, 커널이 좀비 프로세스를 제거하는 과정
프로세스 종료 시 처리
- 등록된 클린업 핸들러를 역순으로 호출
- 각종 자원 해제
- 대기 중인 시그널이 있다면 저장
- 고아 프로세스의 경우, 부모 프로세스를 init 프로세스로 변경 (reparent)
'CS > OS' 카테고리의 다른 글
[운영체제] 스레드 (0) | 2025.01.29 |
---|---|
[운영체제] 프로세스 스케줄링 (0) | 2025.01.28 |
[운영체제] 프로세스 (0) | 2025.01.28 |
[운영체제] 오퍼레이팅 시스템 개요 (0) | 2025.01.28 |
[운영체제] 메모리 (0) | 2025.01.28 |