-
CS 스터디 - 운영체제 Q&A(1)CS 2023. 8. 10. 23:28
#1 ) 멀티 스레드 방식이 멀티 프로세스 방식에 비해 가지는 장점에 대해 설명해주세요.
멀티 프로세스 방식만으로도 하나 이상의 작업을 수행할 수 있지만, 멀티 프로세스보다 메모리 등 자원을 적게 사용하고, 자원을 어느정도 공유하기 때문에 스레드 간 데이터 주고 받는 통신 비용이 적게 든다는 장점을 가집니다.
#2 ) 뮤텍스와 세마포어의 차이에 대해 설명해주세요.
뮤텍스는 오직 하나의 스레드 || 프로세스만 접근할 수 있으며, 락을 획득한 스레드 || 프로세스가 락을 해제해야 합니다.
세마포어는 세마포어 변수만큼의 스레드 || 프로세스가 접근할 수 있으며 현재 수행중이 아닌 프로세스가 세마포어를 해제할 수 있습니다.
두 가지 모두 임계영역에서의 경쟁상태를 제거할 수 있습니다.
- 경쟁상태 : 2가지 이상의 스레드가 공유자원에 접근하려고 서로 경쟁하는 것
- 임계영역 : 공유자원이 존재하는 구간으로, 경쟁상태 일어날 수 있는 영역
#3 ) Context switching이 무엇인가요?
멀티 프로세스 환경에서 CPU는 여러 프로세스를 돌아가면서 작업을 처리하므로, 현재 프로세스를 중단하고 다음 프로세스가 실행되어야 하는 경우가 발생한다. 따라서 현재까지 수행한 context를 저장해두고 다음 프로세스의 context로 교체하는 것을 의미합니다.
프로세스가 동작 -> 대기를 하면서 해당 프로세스의 Context를 보관
대기하고 있던 다음 프로세스가 동작 ~ 이전에 보관했던 프로세스의 상태를 복구
#4 ) 데드락의 발생 조건?
상호배제 : 한 자원에 여러 프로세스가 동시에 접근할 수 없음
점유대기 : 하나의 자원을 소유한 상태에서 다른 자원을 기다림
비선점 : 프로세스가 어떤 자원의 사용을 끝낼 때까지 프로세스 자원 뺏을 수 없음
순환대기 : 각 프로세스가 순환적으로 다음 프로세스가 요구하는 자원을 갖고 있음
#5 ) 스레드가 독립적으로 할당하는 자원 2가지가 무엇이고, 왜 공유하지 않고 독립적으로 할당할까요?
Program Counter
스레드의 명령어가 어디까지 수행되었는지 저장하는 부분으로 스레드가 CPU 할당받았다가 스케줄러에 의해 선점당하여 연속적으로 수행되지 못합니다. 따라서 각 스레드별로 수행된 부분을 기록할 필요가 있습니다.
Stack
스택 영역에 함수 호출 시 전달되는 인자, 되돌아갈 주소 등을 저장하므로 함수에 따른 독립적인 실행 흐름을 갖기 위해 스택을 각각 할당해줄 필요가 있습니다.
* 프로그램 카운터(Program counter, PC)는 마이크로프로세서(중앙처리장치) 내부에 있는 레지스터 중의 하나로서, 다음에 실행될 명령어의 주소를 가지고 있어 실행할 기계어 코드의 위치를 지정. 명령어 포인터라고도 한다.
#6 ) Blocking - Non-blocking과 Synchronous - Asynchronous 차이에 대해 설명해주세요.
Blocking & Non-Blocking
- 호출된 함수가 자신이 할 일을 모두 마칠 때까지 제어권을 계속 가지고서 호출한 함수에게 바로 돌려주지 않으면 Blocking
- 호출된 함수가 자신이 할 일을 채 마치지 않았더라도 바로 제어권을 건네주어(return) 호출한 함수가 다른 일을 진행할 수 있도록 해주면 Non-blocking
- 호출된 함수가 자기 일 처리하기 전에 호출한 함수가 리턴된다면 Non-blocking, 호출된 함수가 끝나기 전까지 호출한 함수가 기다리고 있다면 Blocking
Synchronous & Asynchronous
- 호출된 함수의 수행 결과 및 종료를 호출한 함수가(호출된 함수뿐 아니라 호출한 함수도 함께) 신경 쓰면 Synchronous
- 호출된 함수의 수행 결과 및 종료를 호출된 함수 혼자 직접 신경 쓰고 처리한다면 Asynchronous
- 여러 요청을 보냈을 때, Synchronous라면 요청 순서대로 응답이 올것이고, Asynchronous라면 요청 순서대로 응답이 온다는 보장이 없다.
#7 ) 동시성과 병렬성의 차이에 대해 설명해주세요.
동시성 : 멀티 프로그래밍에서 나온 개념, 메모리에 여러 프로세스를 적재하여 동시에 실행되는것처럼 보이게 하는 것, 실제로는 번갈아서 수행됨 / 싱글 코어에서 멀티스레드 동작시키는 방식
병렬성 : 멀티 프로세싱에서 나온 개념, 실제로 동시에 여러 프로세스를 병렬적으로 수행하는 것 / CPU가 멀티 코어여야 한다.
# 8 ) 프로세스 status 중 suspended에 대해 설명해주세요.
사용자가 정지시키거나, 메모리에 너무 많은 프로세스가 올라가 있어 디스크로 swap out 된 상태를 의미합니다.
Suspended Ready 와 Suspended Block 2가지 상태가 있는데 Suspended Ready는 Ready 상태였던 프로세스가 swap out 당한 상태이고, Suspended Block은 Blocked 상태의 프로세스 swap out된 것으로 blocked 된 조건이 충족되면 Suspended Ready로 바뀝니다.
* swap out : 시스템 성능이 저하되는 경우 일부 프로세스로부터 메모리를 통째로 빼앗아 디스크의 swap 영역에 저장.
- Running : CPU 받아 명령을 수행중인 상태
- Ready : CPU 제외한 메모리 등 모든 조건이 준비된 상태(메인 메모리로 로드된) - CPU만 받으면 당장 수행 가능
- Blocked : CPU 받더라도 당장 실행 불가 -> I/O event 기다리거나 디스크에서 file 읽어와야 하는 등 저장매체에 액세스해서 이벤트 발생 대기중인 상태
- new : 프로세스를 위한 자료구조들은 생성, 아직 메모리 획득 승인은 못 받은 상태
- terminated : 프로세스는 종료되었는데 프로세스와 관련된 자료구조 정리 완전히 못한 상태
- Suspended : 사용자가 정지시키거나 메모리에 너무 많은 프로세스가 올라가있어 디스크로 swap out된 상태
# 9 ) 스레싱에 대해 설명해주세요.
페이지 부재율이 증가하여 swapping이 자주 일어나게 되고, 이로 인해 CPU 이용율이 급격히 떨어지는 현상을 의미합니다.
CPU 이용율이 낮으면 OS는 CPU가 한가하다고 판단, 메모리에 동시에 올라가 있는 프로세스의 수 (MPD, 다중 프로그래밍 정도)를 높이는데, 이는 각 프로세스들이 실행에 필요한 최소한의 프레임도 할당받지 못하게 되어 CPU 이용율이 지속적으로 떨어지는 악순환을 일으킵니다.
정적 할당 방식
- equal allocation, proportional allocation 방식이 있다.
- 프로세스 크기와 상관없이 균등하게 나눠주는가? / 프로세스 크기에 비례하여 나눠주는가?
- 하지만 이 방식은 프로세스가 실행 중에 필요한 프레임을 유동적으로 반영하지 못하며(ex 초기 필요량은 작았는데 동영상 재생 등 프레임이 동적으로 더 많이 요구될 때) 당장 필요하지 않은 프레임도 처음부터 미리 확보하여 공간을 낭비한다는 단점 존재.
동적 할당 방식
- working set : 지역성 원리 이용하여 지역성 집합이 메모리에 동시에 올라갈 수 있도록 보장. 대신 충분한 페이지를 할당하지 않으면 작업집합에 있는 페이지를 물리 메모리에 유지하기 힘듦.
- page fault frequency : 프로세스 페이지 부재율을 주기적으로 조사, 이 값에 근거하여 각 프로세스에 할당할 메모리 양을 동적으로 예측하고 조절하는 방식
# 10 ) 시스템 콜이 무엇이고 왜 존재하는지 설명해주세요.
OS가 커널에 접근하기 위한 인터페이스로, 유저 프로그램이 OS의 서비스 받기 위해 커널함수를 호출할 때 사용합니다.
프로세스나 스레드에서 OS로 요청을 할 때 시스템 콜 - 커널을 거쳐 OS에 전달됩니다.
컴퓨터 자원에 대한 직접 접근을 차단, 시스템 콜을 사용해서 접근하도록 제약을 두어 컴퓨터 자원을 다른 프로그램으로부터 보호하며 유저 프로그램에게 서비스를 제공하기 위해 존재합니다.
참고한 자료들
'CS' 카테고리의 다른 글
CS 스터디 - Java (0) 2023.08.31 CS 스터디 - Java & Spring (0) 2023.08.15 CS 스터디 - 네트워크 Q&A (1) (0) 2023.08.03 CS 스터디 - 운영체제 (0) 2023.07.21 CS 스터디 - 네트워크 이론 (0) 2023.07.05