All Honey Tip

[기술 면접] 3. Process를 설명해주세요.

제목을 입력해주세요 복사본 6 001 2

이전 시간에 이어서 운영체제의 기본, Process에 대해 알아보겠습니다. Process는 앞으로 나오는 내용들의 기초가 되는 핵심 개념입니다. Process가 무엇인지, 어떤 특징을 가지는지 꼼꼼하게 정리하고 넘어가시길 바랍니다.

image 89





Q: Process를 설명해주세요.

프로세스란, 실행 중인 프로그램을 의미합니다. 즉, 실행파일 형태로 존재하던 프로그램이 Memory에 적재되어 CPU에 의해 실행(연산)되는 것을 프로세스라 합니다.

  • Memory : CPU가 직접 접근할 수 있는 컴퓨터 내부의 기억장치입니다. 프로그램이 CPU에서 실행 되려면, 해당 내용이 Memory에 적재된 상태여야만 합니다
Process

  • CPU의 연산과 PC register 프로그램의 코드를 토대로 CPU가 실제 연산을 해야만 프로그램이 실행된다고 볼 수 있으며, 어떤 코드를 읽어야 하는가를 정하는 것은 CPU 내부에 있는 PC(Program Counter) register에 저장되어 있습니다. PC register에는 다음에 실행될 코드(명령어, instruction)의 주소값이 저장되어 있습니다. 즉, Memory에 적재되어있는 프로세스 Code 영역의 명령어중 다음 연산에서 읽어야할 명령어의 주소값을 PC register가 순차적으로 가리키게 되고, 해당 명령어를 읽음으로써 CPU가 연산을 하게 되면, process가 실행되는 것입니다.





Q: Process의 Memory 영역에 대해서 설명해주세요.

프로세스가 운영체제에서 할당받는 메모리 공간은 Code, Data, Heap, Stack 영역으로 구분됩니다.

영역설명
Code실행한 프로그램의 코드가 저장되는 메모리 영역
Data프로그램의 전역 변수와 static 변수가 저장되는 메모리 영역
Heap프로그래머가 직접 공간을 할당(malloc)/해제(free)하는 메모리 영역
Stack함수 호출 시 생성되는 지역 변수와 매개 변수가 저장 되는 임시 메모리 영역






Q: Process의 Context가 무엇인가요?

Process가 현재 어떤 상태로 수행되고 있는지에 대한 정보입니다. 해당 정보는 PCB에 저장합니다.

시분할 시스템에서는 한 process가 매우 짧은 시간동안 CPU를 점유하여 일정부분의 명령을 수행하고, 다른 process에게 넘깁니다. 그 후 차례가 되면 다시 CPU를 점유하여 명령을 수행합니다. 따라서 이전에 어디까지 명령을 수행했고, register에는 어떤 값이 저장되어 있었는지에 대한 정보가 바로 context입니다.







Q: PCB(Process Control Block)가 무엇인가요?

OS가 프로세스를 표현한 자료구조로 프로세스 생성 시 OS가 생성합니다. PCB에는 프로세스의 중요한 정보가 포함되어 있기 때문에, 일반 사용자가 접근하지 못하도록 보호된 메모리 영역 안에 저장됩니다. 일부 OS에서 PCB는 커널 스택에 위치합니다. 이 메모리 영역은 보호를 받으면서도 비교적 접근하기가 편리하기 때문입니다.






Q: PCB에 저장되는 것들은 무엇이 있나요?

PCB는 운영체제가 process에 대해 필요한 정보를 모아놓은 자료구조입니다. 일반적으로

  • Process state
  • Process number(PID)
  • Program Counter(PC), 레지스터
  • CPU 스케쥴링 정보, 우선순위
  • 메모리 정보(해당 process의 주소 공간 등)

로 분류됩니다.

PCB
Process Statenew, running, waiting, halted 등의 state가 있습니다.
Process Number해당 process의 number
Program Counter(PC)해당 process가 다음에 실행할 명령어의 주소를 가리킵니다.
Registers컴퓨터 구조에 따라 다양한 수와 유형을 가진 register값들을 가집니다.
Memory limitsbase register, limit register, page table, sgment table 등







Q: Context switching에 대해서 설명해주세요.

한 process에서 다른 process로 CPU제어권을 넘겨주는 것을 말합니다. 이 때 이전의 프로세스 상태를 PCB에 저장하여 보관하고 새로운 프로세스의 PCB를 읽어서 보관된 상태를 로드하는 작업이 이루어집니다.






Q: 컨택스트 스위칭이 많이 발생하면 왜 안 좋을까요?

컨텍스트 스위칭이 발생하는 동안, CPU는 아무 일도 하지 못합니다. 즉 순수한 오버헤드이기 때문에 성능이 저하됩니다.






Q: Process의 state에는 어떤 것들이 있나요?

Process는 실행(running), 준비(ready), 봉쇄(wait, sleep, blocked) 세 가지 상태로 구분됩니다.

  • 실행 : 프로세스가 CPU를 점유하고 명령을 수행중인 상태
  • 준비 : CPU만 할당받으면 즉시 명령을 수행할 수 있도록 준비된 상태
  • 봉쇄 : CPU를 할당받아도 명령을 실행할 수 없는 상태 – I/O작업 대기






Q: Multi Process에 대해서 설명해주세요.

2개 이상의 프로세스가 동시에 실행되는 것을 말합니다. 여기서 동시라는 표현은 동시성인 Concurrency와 병렬성인 Parallelism, 두 가지를 의미합니다.

동시성은 CPU core가 1개일 때, 여러 process를 짧은 시간 동안 번갈아 가면서 연산을 하게 되는 시분할 시스템(Time Sharing Syste) 으로 실행되는 것입니다.

병렬성은 CPU core가 여러개일 때, core들이 각각의 process를 연산함으로써 process가 동시에 실행되는 것입니다.

동시성병렬성
Single coreMulti core
동시에 실행되는 것 같아 보입니다.실제로 동시에 여러 작업이 처리 됩니다.
  • 메모리관리 : Multi Process는 2개 이상의 process가 동시에 실행되며, 이 때 process들은 CPU와 메모리를 공유합니다. 여기서 서로 다른 process의 영역을 침범하지 않고 자신의 memory영역에만 접근하도록 OS가 관리해줍니다.




마치며

Process에 대해 알아보는 시간을 가졌습니다. Process는 운영체제의 기초이자 핵심 개념입니다. 특히 신입 개발자 면접에서 자주 등장하는 개념이며, 이후 등장하는 OS 개념들에서도 필요시 되는 부분이기 때문에, 꼼꼼하게 공부하여 대비해야 합니다.

다음 시간에는 Thread에 대해 알아보도록 하겠습니다.


코멘트

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다