-
보기에서 알맞은 단어를 찾아 빈칸을 채우시오. (하나의 단어를 여러번 사용 가능)
<보기> 프로세스, 프로그램, 치맥, 문맥, 시분할, 공간분할, 게이머, 타이머, 하드웨어 문맥, 프로세스의 주소 공간, 커널상의 문맥, 코드, 데이터, 힙, 스택
____
란 실행 중인____
을 의미한다.- 프로세스의
__
은 프로세스가 현재 어떤 상태에서 수행되고 있는지 정확히 규명하기 위해 필요한 정보이다. - 여러 프로세스가 함께 수행되는
___
시스템 환경에서는___
인터럽트에 의해 짧은 시간 동안 CPU를 사용하고, 빼앗겼다가 다시 CPU를 획득하는 식으로 CPU 관리가 이루어진다. - CPU를 다시 획득해서 명령 수행을 재개할 때, 이전에 어느 부분까지 명령을 수행했는지 정확한 재현을 해야 하는데, 이때 필요한 정보가 바로 프로세스의
__
이다. - 프로세스의 문맥은
하드웨어 문맥
,프로세스의 주소 공간
,커널상의 문맥
등 3가지로 분류된다. 이 중_______
은 CPU의 수행 상태를 나타내는 것으로, 프로그램 카운터 값과 각종 레지스터에 저장하고 있는 값들을 의미한다. - 프로세스는 자기 자신만의 독자적인 주소 공간을 갖고 있는데, 이는
__
,___
,__
으로 구성된다.
📄 답지
-
프로세스(process)
란 실행 중인프로그램
(program in execution)을 의미한다.프로세스는 잡(job)이라는 용어와 혼용해 사용하기도 한다.
디스크에실행파일 형태
로 존재하던 프로그램이메모리
에 올라가서 실행되면, 비로소 생명력을 갖는 프로세스가 된다. -
프로세스의
문맥
은 프로세스가 현재 어떤 상태에서 수행되고 있는지 정확히 규명하기 위해 필요한 정보이다. -
여러 프로세스가 함께 수행되는
시분할
시스템 환경에서는타이머
인터럽트에 의해 짧은 시간 동안 CPU를 사용하고, 빼앗겼다가 다시 CPU를 획득하는 식으로 CPU 관리가 이루어진다. -
CPU를 다시 획득해서 명령 수행을 재개할 때, 이전에 어느 부분까지 명령을 수행했는지 정확한 재현을 해야 하는데, 이때 필요한 정보가 바로 프로세스의
문맥
이다. -
프로세스의 문맥은
하드웨어 문맥
,프로세스의 주소 공간
,커널상의 문맥
등 3가지로 분류된다. 이 중하드웨어 문맥
은 CPU의 수행 상태를 나타내는 것으로, 프로그램 카운터 값과 각종 레지스터에 저장하고 있는 값들을 의미한다.밑의 그림을 참고하기
-
프로세스는 자기 자신만의 독자적인 주소 공간을 갖고 있는데, 이는
코드
,데이터
,스택
으로 구성된다.
- 보기에서 알맞은 단어를 골라 프로세스의 상태 변화도를 채워주세요
dispatch, new, malloc, ready, running, Terminator, terminated, waiting(blocked)
- 이렇게 프로세스의 상태를 구분하는 이유는? (서술형)
📄 답지
아래 보기의 단어들을 활용하여 빈칸을 채워보세요.
(보기) 프로세스
,프로세스 제어블록
, CPU 레지스터
,시스템
, 데이터
,CPU
, 운영체제
,프로그램
, 자료구조
,메모리
,커널
, 블록
, 주소
- 프로세스 제어블록 (Process Control Block)이란
______
가 시스템 내의______
들을 관리하기 위해 프로세스마다 유지하는 정보들을 담는 커널 내의______
를 뜻한다. - 프로세스 제어블록은 약간의 회계 (accounting) 정보와 함께
______
를 시작시키거나 다시 시작시키는 데 필요한 모든 데이터를 위한 저장소의 역할을 한다. - 각 프로세스마다
____________
을 가지고 있다. - 프로세스 제어블록을 구성하는 요소는 다음과 같다.
______
의 상태 (e.g. new, ready, running 등등)- 프로그램 카운터 값 (다음에 수행할 명령어의
______
) ____________
의 값 (CPU 연산을 위해 현 시점에 레지스터에 어떤 값을 저장하고 있는지 나타냄)- CPU 스케줄링 정보
______
관리 정보 (메모리 할당을 위해 필요한 정보)- 자원 사용 정보 (accounting information 회계 정보)
- 입출력 상태 정보 (공룡책 p.122 에 조금 더 자세한 설명)
📄 답지
아래 보기의 단어들을 활용하여 빈칸을 채워보세요.
(보기) 프로세스
,프로세스 제어블록
, CPU 레지스터
,시스템
, 데이터
,CPU
, 운영체제
,프로그램
, 자료구조
,메모리
,커널
, 블록
, 주소
-
프로세스 제어블록 (Process Control Block)이란
운영체제
가 시스템 내의프로세스
들을 관리하기 위해 프로세스마다 유지하는 정보들을 담는 커널 내의자료구조
를 뜻한다. -
프로세스 제어블록은 약간의 회계 (accounting) 정보와 함께
프로세스
를 시작시키거나 다시 시작시키는 데 필요한 모든 데이터를 위한 저장소의 역할을 한다. -
각 프로세스마다
프로세스 제어블록
을 가지고 있다. -
프로세스 제어블록을 구성하는 요소는 다음과 같다.
프로세스
의 상태 (e.g. new, ready, running 등등)- 프로그램 카운터 값 (다음에 수행할 명령어의
주소
) CPU 레지스터
의 값 (CPU 연산을 위해 현 시점에 레지스터에 어떤 값을 저장하고 있는지 나타냄)- CPU 스케줄링 정보
메모리
관리 정보 (메모리 할당을 위해 필요한 정보)- 자원 사용 정보 (accounting information 회계 정보)
- 입출력 상태 정보
(공룡책 p.122 에 조금 더 자세한 설명)
Context Switching은 지원자의 기본기를 검사하기 위해 자주 등장하는 면접질문이자, CS 주요 기본지식이기도 합니다.
기술면접을 딱 하루 앞둔 jehong
은 면접준비를 위해 Context Switching에 대해 반드시 언급해야할 내용을 아래와 같은 목차로 간추려 노션에 정리해보았습니다.
- Context Switching 목적
- Context Switching 과정
- Context Switching 이 필요한 이유
- Context Switching 이 발생하는 경우
jehong
이 낮잠을 자던 중, 키도
가 핸드폰을 마구 누르는 바람에 일부 자료가 지워지거나 변경되었습니다.
시간이 촉박한 jehong
를 도와 자료를 바르게 정리해주세요!
- 하나의 프로세스가 CPU를 사용중인 상태에서
- ※ 따라서 CPU를 점유하는 프로세스가 다른 사용자 프로세스로 변경되는 과정이 아니라, 하나의 프로세스의 실행모드만이 잠시 사용자모드에서
ㅇㅇㅇㅇ
로 바뀌는 것일 뿐인 모드변경은 Context Switching 이라고 하지 않음.
- ※ 따라서 CPU를 점유하는 프로세스가 다른 사용자 프로세스로 변경되는 과정이 아니라, 하나의 프로세스의 실행모드만이 잠시 사용자모드에서
- 이전의 프로세스의 Context를
ㅇㅇ
하고, 새로운 프로세스의 Context를ㅇㅇ
하는 작업
- 하나의 프로세스를 쭉 실행하는 것과 비교했을 때 Context Switching을 하면 많은
ㅇㅇㅇㅇ
가 뒤따름 (Context Switching 동안 에는 해당 CPU는 아무것도 못함)- ※
ㅇㅇㅇㅇ
: 어떤 처리를 하기 위해 들어가는 간접적인 처리 시간 · 메모리 등
- ※
- 하지만 빠른 속도로 Task를 바꿔가며 실행하면 사용자 입장에서는 여러 프로세스가 동시에 처리되는 것처럼 느끼게 되는 장점이 있기 때문에 필요함.
- 이처럼 여러 프로세스가 함께 수행되는
ㅇㅇㅇ
시스템 환경에서는ㅇㅇㅇ
인터럽트에 의해 짧은 시간동안 CPU를 사용한 후 빼앗겼다가 추후에 다시 CPU를 획득하는 식으로 CPU 관리가 이루어지므로, CPU를 뺏기기 직전 어느 부분까지ㅇㅇ
을 수행했는지 정확한 상태를 재현할 필요가 있음
- 예시1)
- 예시2)
📄 답지
- 하나의 프로세스가 CPU를 사용중인 상태에서
다른 프로세스에게 CPU 제어권을 이양
하기 위한 과정- ※ 따라서 CPU를 점유하는 프로세스가 다른 사용자 프로세스로 변경되는 과정이 아니라, 하나의 프로세스의 실행모드만이 잠시 사용자모드에서
커널모드
로 바뀌는 것일 뿐인 모드변경은 문맥교환이라고 하지 않음
- ※ 따라서 CPU를 점유하는 프로세스가 다른 사용자 프로세스로 변경되는 과정이 아니라, 하나의 프로세스의 실행모드만이 잠시 사용자모드에서
- 이전의 프로세스의 Context를
저장(보관)
하고, 새로운 프로세스의 Context를복원(적재)
하는 작업
- 하나의 프로세스를 쭉 실행하는 것과 비교했을 때 Context Switching을 하면 많은
오버헤드
가 뒤따름 (Context Switching 동안 에는 해당 CPU는 아무것도 못함)- ※
오버헤드
: 어떤 처리를 하기 위해 들어가는 간접적인 처리 시간 · 메모리 등
- ※
- 하지만 빠른 속도로 Task를 바꿔가며 실행하면 사용자 입장에서는 여러 프로세스가 동시에 처리되는 것처럼 느끼게 되는 장점이 있기 때문에 필요함.
- 이처럼 여러 프로세스가 함께 수행되는
시분할
시스템 환경에서는타이머
인터럽트에 의해 짧은 시간동안 CPU를 사용한 후 빼앗겼다가 추후에 다시 CPU를 획득하는 식으로 CPU 관리가 이루어지므로, CPU를 뺏기기 직전 어느 부분까지명령
을 수행했는지 정확한 상태를 재현할 필요가 있음
- 예시1) timer interrupt (CPU 사용시간이 만료 되었을 때)
- 예시2) I/O request (입출력 요청할 때)
- 예시3) fork a child (자식 프로세스를 만들 때)
- 예시4) wait for an interrupt (인터럽트 처리를 기다릴 때)