Q1. 캐시를 사용하는 이유와 캐시 적중률을 높이기 위한 방법 ?
- 캐시는 메모리와 cpu간의 속도 차이를 완화하기 위해 메모리의 데이터를 미리 가져와서 저장해두는 임시 장소입니다.
캐시는 필요한 데이터를 모아 한꺼번에 전달하는 버퍼의 일종으로 cpu가 앞으로 사용할 것으로 예상되는 데이터를 미리 가져다 놓습니다.
이러한 캐시의 적중률을 높이기 위한 방법으로 캐시의 크기를 늘리는 방법이 있지만 이는 가격이 비싸다는 한계가 있습니다.
다른 방법으로는 앞으로 사용될 데이터를 가져오는데 지역성 이론에 따르면 현재 위치에 가까운 데이터가 멀리 있는 데이터보다 사용될 확률이 더 높다는 것이 있습니다.
Q2. 프로세스와 스레드의 차이 ?
- 프로세스란 프로그램을 실행했을 때 디스크에서 메모리에 올라와 cpu자원의 할당을 받을 수 있는 상태를 말합니다. 프로세스는 프로세스마다 구분하기 위한 정보와 우선순위, 메모리가 어느 위치에 할당되어 있는지 등에 대한 정보가 필요한데 이는 프로세스를 생성할 때 생성되는 프로세스 제어 블록에 정보고 보관됩니다.
- 스레드는 프로세스가 cpu에 작업을 요청하는 실행 단위 입니다. 한 프로세스 내에서 스레드는 1개일 수도 있고 여러 개일 수도 있습니다. 스레드 간에는 프로세스의 주소나 자원을 공유할 수 있습니다.
Q3. 멀티스레드와 멀티 프로세스의 차이 ?
- 멀티스레드란 하나의 프로세스 내 작업을 여러 개의 스레드로 분할함으로써 작업의 부담을 줄이는 효율적인 프로세스 운영 기법입니다.
멀티 프로세스란 여러개의 cpu를 통해 여러개의 스레드를 동시에 처리하는 작업 환경을 말합니다.
Q4. 스케줄러란 무엇이며 스케줄링의 3단계 ?
- 스케줄러란 여러 프로세스 상황을 고려하여 cpu와 시스템 자원을 어떻게 배정할지 결정하는 역할을 합니다. 스케줄링을 위한 큐는 현재 시스템 내에 있는 모든 프로세스의 집합인 작업큐, 메모리 안에서 cpu의 할당을 기다리는 프로세스의 집합인 준비큐, 입출력을 대기하고 있는 프로세스의 집합인 장치큐 3가지가 있습니다. 각각의 큐에 프로세스들을 넣고 빼주는 스케줄러에도 장기, 단기, 중기 스케줄러가 있습니다.
- 💡장기 스케줄러 : 어떤 프로세스를 준비큐에 넣을지를 정합니다.
- 단기 스케줄러: 준비큐에 있는 프로세스 중에서 어떤 프로세스를 cpu에 할당할지를 정합니다.
- 중기 스케줄러: 메모리에 여유 공간이 부족할 경우 공간을 만들기 위해 프로세스 일부를 디스크로 옮기는 역할을 합니다.
Q5. CPU 스케줄링 방법이란 ?
- 스케줄링 대상은 준비큐에 있는 프로세스 대상으로 다음과 같은 방식이 있습니다.
- FCFS : 처음 도착한 프로세스가 먼저 스케줄링을 받는 방식으로 시간이 긴 프로세스가 먼저 오면 효율성이 떨어지는 문제점이 있습니다.
- SJF : 프로세스의 수행시간이 짧은 프로세스부터 CPU를 할당하는 방식으로 수행시간이 긴 프로세스는 영원히 할당받지 못하는 문제점이 있습니다.
- SRT : 현재 프로세스의 수행시간이 끝나는 시간보다 나중에 오는 프로세스의 수행시간의 완료시간이 더 짧다면 즉시 그 프로세스에게 CPU를 할당하는 방식을 CPU의 수행시간을 측정할 수 없다는 문제점이 있습니다.
- 우선순위 방식은 정수로 표현된 우선순위가 더 높은 프로세스에게 할당하는 방식으로 선점형 방식과 비선점형 방식이 있습니다. 선점형 방식은 우선순위가 높은 프로세스에게 즉시 cpu를 할당하고 비선점형 장식은 준비큐에 맨 앞에 프로세스를 등록합니다. 우선순위 방식을 프로세스가 영원히 cpu를 할당받지 못할 수도 있는 문제점이 있습니다.
- Round Robin 방식은 현대에서 가장 많이 쓰이는 cpu스케줄링으로 각 프로세스들은 동일한 cpu할당 시간을 받습니다. 할당시간이 만료되면 준비큐에 맨 뒤로 가게 됩니다. 문제점은 할당시간이 너무 길다면 FCFS와 같게 된다는 점이 있습니다.
Q6. 동기와 비동기의 차이?
- 동기란 요청과 응답이 동시에 이루어짐을 말합니다. 이는 즉 데이터를 서버에 요청한다면 그 서버가 데이터 요청에 따른 응답을 이루기 전까지 사용자는 다른 활동을 할 수 없음을 말합니다.
- 비동기란 동기의 반대로 요청과 응답이 동시에 이루어지지 않습니다. 그러므로 서버에게 데이터를 요청한 후 응답을 기다리지 않은 채 다른 요청을 보낼 수 있습니다.
Q7. 프로세스 동기화에 대해서 설명 ?
- 프로세스끼리 자원을 공유하다보면 어떤 데이터에 대해 동시 작업이 일어났을 경우 경쟁상태가 되며 처리순서에 상관없이 원하는 결과값을 얻지 못하는 문제가 발생할 수 있습니다. 이를 해결하는 방법은 임계구역이라는, 공통으로 쓰이는 자원을 모아둔 구역에 접근하는 프로세스를 하나만 존재하도록 관리하는 방법이 있습니다.
💡 임계구역에 문제를 해결하기 위한 기본 조건 3가지
- 상호배제: 임계구역에는 무조건 하나의 프로세스만 둡니다.
- 진행: 임계구역이 비어있으면 별도의 동작이 없는 프로세스를 임계구역에 넣습니다.
- 한정 대기: 한번 임계구역에 들어갔다 나온 프로세스는 다음에 들어갈 때까지 횟수제한을 둡니다.
'OS' 카테고리의 다른 글
[개발상식] 안드로이드 기술면접 준비 - 1 (0) | 2022.11.06 |
---|---|
[개발상식] IT 기술면접 준비 - 4 (데이터 베이스) (0) | 2022.10.25 |
[개발상식] IT 기술면접 준비 - 3 (컴퓨터 구조) (0) | 2022.10.24 |
[개발상식] IT 기술면접 준비 - 2 (컴퓨터 네트워크) (0) | 2022.10.22 |
[개발상식] IT 기술면접 준비 - 1(개발 상식) (0) | 2022.10.21 |