티스토리 뷰

기타

[기술면접] CS질문

4whomtbts 2021. 3. 4. 20:32

1. 프로세스란?

프로세스의 개념은 정말 간단한데, 프로세스란 실행중인 프로그램이다.

프로세스라는 개념은 왜 필요할까? 프로세스는 현재와 같은 시분할 시스템 운영체제에서 필수적이기 때문이다.

왜냐하면 시분할 시스템의 핵심은 여러 작업에 적절한 시간을 할당하여 자원활용(Utilization)을 극대화하는 목적이 있기 때문이다. 

그리고, 이런 자원(CPU, Memory)을 활용하는 주체가 바로 프로세스이다. 그래서 여러 프로세스들을 어떻게  관리해주냐가 운영체제의 가장 큰 임무가 된다.

프로세스를 시각화 해보면 아래와 같은데

Text

Text 영역에는 프로그램의 실행에 필요한 code가 포함되어 있다. 여기서 code는 정말 binary code를 의미하고

후술할 PCB에서 저장하고 있는 PC(Program Counter)를 통해서 이 프로세스가 다음 실행할 명령어는 무엇인지

기억하고 있는다. 이 외에 추가적으로 할 수 있는 질문은 Java는 Binary로 컴파일이 안 되고 Bytecode로 컴파일이 되는데요?? 인데

Java 프로그램을 실행시키는 주체는 JVM이고, JVM은 그 자체로 프로세스이고, JVM이 Java program을 직접 실행시키므로 이야기가 다르다.

Stack

매우 친숙한 개념이다. 프로세스 내에서 지역변수 할당, 함수 호출 등과 같은 경우 스택을 사용하게 되는데

이 때 프로세스는 자신만의 스택에 그것들을 쌓아놓는다

Heap

동적으로 할당된 메모리들을 저장해놓는 영역이다

Data

전역변수, 정적변수가 저장되는 공간이다

 

PCB

PCB는 Process Control Block의 약자이다. 프로세스에 대한 거의 모든 정보를 가지고 있다.

1. 프로세스의 상태

프로세스는 New, Running, Waiting, Ready, Terminated 와 같이 생명주기 동안 여러 상태를 갖게 된다 

2. PC

다음 실행시킬 명령어에 대한 주소를 가지고 있는다. 프로세스가 CPU를 할당받으면 CPU의 레지스터를 모두

현재 실행시킬 프로세스가 가지고 있던 레지스터로 갈아치워서 실행시키게 되는데, 이 때 PC는 PCB에 백업이

되어있는 상태이기 때문에, 다시 CPU의 레지스터에 올릴 수 있기에 다음에 실행시킬 명령어가 무엇인지 알 수 있는 것이다. 

즉, 실행종료 직전의 상태로 돌아가게 되는 것이다.

3. CPU Register

범용 레지스터, Condition code, accumulator, index register, stack pointer 등등 실행에 필요한 다양한 

레지스터들에 대한 정보를 가지고 있다.

4. CPU 스케쥴링 정보

프로세스 우선순위, 스케쥴링 큐에 대한 포인터들을 저장하고 있다

5. 메모리 관리 정보

base, limit register와 page table, segment table 등에 대한 정보를 가지고 있다. 

이처럼 프로세스는 정말 많은 양의 정보를 가지고 있고.  따라서 프로세스를 교환하는 작업(Context swtiching)은 

상당히 비용이 크다. 

 

2. Race Condition

두 개 이상의 쓰레드가 공유하는 데이터에 두 개 이상의 쓰레드가 공유하는 데이터에 동시 접근할 때 발생한다. 쓰레드 스케줄링 알고리즘은 어느 쓰레드를 언제 실행할지 정하기 때문에 
어떤 쓰레드가 공유하는 데이터에 접근할지 프로그래머는 알 수 없다. 따라서 데이터의 변화가 쓰레드 스케줄링 알고리즘에 의존적이게 된다
주로, check-then-act 같은 상황에 발생한다. 이러한 레이스 컨디션 방지를 위해서 공유되는 데이터 주변에는 락을 걸어주어야 한다.

 

IPC

'기타' 카테고리의 다른 글

THE ART OF SOFTWARE TESTING 정리  (0) 2020.11.19
Docker의 소개와 설치 및 사용법  (0) 2020.11.16
AWS & AWS Educate : 2  (0) 2020.11.16
AWS & AWS Educate : 1  (0) 2020.11.16
GCP 8080, 8000포트 열기  (3) 2020.05.15
댓글