1. 컴퓨터 구조론에서 파이프 라이닝을 쓰는 이유와 효율을 설명하시오.
-> 파이프 라이닝 구조는 한 번에 하나의 명령어 처리가 아니라 하나의 명령어가 실행 되는 도중에 다른 명령어도 실행하여 각 단계에 있는 자원들을 놀리지 않고 역할을 부여함으로써 동시에 여러 개의 명령어를 처리할 수 있게 합니다. 이것은 처리량을 늘리기 때문에 동일 시간에 더 많은 명령어를 처리할 수 있기 때문에 효율적이라고 할 수 있습니다.
2. 프로세스 / 스레드 차이를 설명하시오
->프로세스는 메모리에 로드된 프로그램의 인스턴스 이고 스레드는 프로세스 내의 실행 단위 입니다. 프로세스가 다른 프로세스에 접근하려면 IPC 통신을 사용해야 하지만 스레드는 다른 스레드와 stack영역을 제외한 메모리 영역을 공유해 하여 다른 통신 과정이 필요 없어 이 부분에선 효율적이라 할 수 있음
3. PCB가 무엇인지 설명하시오
-> Process Control Block의 약자로 프로세스에 대한 정보를 저장하고 있는 자료구조 단위. 프로세스의 pid, 메모리 정보, 프로세스 상태 정보, cpu 스케줄링 정보 등을 담고 있음.
4. context-switiching 이 무엇인지 설명하시오
-> 현재 실행되고 있는 프로세스나 스레드의 상태를 저장하고 새로운 프로세스나 스레드를 cpu에 적재하는 행동을 의미, 이 작업이 너무 많아지면 cpu 부하 때문에 생기는 딜레이보다 교체하는 딜레이가 커지는 성능 저하가 발생할 수 있음
5. 멀티스레드 장/단점
-> 장점 : 멀티 프로세스에 비해서 스레드 끼리는 메모리의 영역 공유(stack영역을 제외한)를 하기 때문에 메모리를 아낄 수 있고 IPC같은 복잡한 통신기법이 필요없음
단점 : 메모리 영역을 공유하기 때문에 하나의 스레드의 문제가 전체적으로 퍼저 나갈 가능성이존재함 또한 메모리 영역의 동기화 문제가 발생할 수 있기 때문에 설계가 어렵고 디버깅이 까다로움
6. Critical Section(임계 영역) 이 무엇인지 설명하시오
-> 두개 이상의 프로세스/스레드가 공유 자원에 접근하는 프로그램 코드 부분
7. Race Condition 이 무엇인지 설명하시오
-> 두개 이상의 프로세스가 하나의 자원을 놓고 사용하려는 경쟁 상황
8. DeadLock이 무엇인지 설명하시오
-> 둘 이상의 프로세스가 한정된 자원을 같이 요청하는 현상. 모든 프로세스들이 공유된 자원에 접근하지 못하고 무한 대기상태에 빠짐
Dead Lock 의 발생 조건 : mutual exclusion (상호 배제), 점유와 대기, 비선점, 순환대기
9. Spin Lock / mutex 차이
-> 둘 모두 자원에 대해 락을 걸고 사용할려고 할 때 락이 풀릴 때까지 기다려야 한다는 점은 동일함. 하지만 뮤텍스의 경우 요구되는 자원에 락이 걸려 있을 경우 락이 풀릴 때까지 기다리지만 스핀 락의 경우 락이 걸려 있을 경우 이를 얻을 때까지 무한 루프를 돌기 때문에 cpu 자원이 소모됨
10. Mutex/ semaphore 차이
-> 뮤텍스는 오직 하나의 스레드만 공유 자원 영역에 들어올 수 있게 설정가능. 하지만 세마포어는 락을 걸지 않은 스레드도 신호를 보내 락을 해제 할 수 있고 세마포어 값이 0이하 이면 동기화가 실행됨. 즉 세마포어 카운트를 1로 설정하면 뮤텍스와 같은 기능이라 볼 수 있음
11. CPU 스케줄링
->하나의 서버에서는 여러 프로세스or스레드들이 작동하는 환경에서 최고의 성능을 내기 위해 자원을 어떤 프로세스에 얼마나 할당하는지 정책을 만드는 것을 cpu 스케줄링이라고 함. 스케줄링 state로는 new-ready-waiting-running-terminated 가 있음.
선점 스케줄링 : SRT, Round Robin, multi-level-queue
비선점 스케줄링 : SJF(hortest Job Frist) , 우선순위 스케줄링, FIFO 스케줄링
12. Round Robin 스켈줄링이 무엇인지 설명하시오
->cpu 스케줄링 기법중 하나로 , 타임퀀텀을 정해서 그 시간 동안 하나의 프로세스를 실행하고, 타임 퀀텀이 지나면 cpu가 다음 프로세스에게 선점 당하고 다시 ready queue로 이동하는 방식. 긴 프로세스가 있을 때, 다른 프로세스들이 불필요하게 길게 기다리게 되는 현상을 방지할수 있고, 결과적으로 response time이 빨라짐.
13. 동기 / 비동기
-> 호출되는 함수의 작업 완료 여부를 신경쓰는지의 여부. A가 B를 호출 한뒤 B가 끝나 리턴값을 계속 확인하면서 신경쓰면 동기, B 의 작업 완료 여부에는 신경쓰지 않으면 비동기
14. 블로킹 / 논블로킹
-> 제어권을 어떻게 처리하느냐에 따라 달라짐. A 실행중 B가 호출 됬을때 제어권을 넘기면 블로킹 넘기지 않으면 논블로킹
15. cache(캐시)가 무엇인지 설명하시오
-> 연산에 필요한 데이터, 값을 미리 갖다놓는 임시 메모리. CPU에서 메인 메모리와 디스크 까지 도달하는데에 cost가 커서 cpu 바로 옆에 딱 달라붙어있기 때문에 cpu에서 접근 코스트가 매우 적어서 성능 향상에 좋음. 하지만 캐시에 필요한 데이터가 없으면 cache miss가 발생함 이것이 많이 발생하면 성능이 줄어들기 때문에 cahce hit rate을 높이는 것이 중요함
16. LRU(Least Recently Used) 캐싱
-> 캐시에 공간이 부족할 때 가장 오랫동안 사용하지 않은 것을 제거하고 새로운 녀석을 배치하는 형식의 알고리즘
17. 가상메모리
-> 메모리는 한정적인데 프로세스 용량이나 프로세스 수가 늘어나면 메모리 공간이 부족해질 수 있음. 그럴 때를 대비해서 프로세스 데이터 전체가 메모리에 올라가지 않더라도, 가상의 주소공간을 이용해 프로세스를 유지할 수 있게끔 해주는 기술임.
18. 페이징
-> 프로그램은 실제 물리적 메모리를 직접적으로 이용하지 않음. 가상 메모리를 이용하게 되고, 그 가상메모리가 결국에는 물리적 메모리에 접근해서 메모리를 이용하게 되는데 이 때 가상 메모리를 일정한 크기의 블록으로 나누어 관리하는 것이 페이징, 물리적 메모리를 나누어 관리하는 것을 fragmentation이라 함
메모리를 직접 지정하는 프로그래밍 2개에서 같은 주소를 사용하더라도 그것은 같은 주소의 메모리에 접근하지 않음 그 이유가 바로 os가 페이징 기법을 통해 다른 메모리 공간에 리다이렉팅 하기 때문임.
19. TLB
-> 가상 메모리를 물리 메모리로 변환하는 속도를 높이기 위한 캐시
20. 캐시 지역성(locality)
->프로그램에서 메모리의 접근이 균등하게 일어나지 않는다는 가정으로, 어떤 메모리에 접근할 때 띄는 특성이 있다는 것을 의미합니다. 대표적으로 두가지가 있는데 최근에 참조됐던 내용이 다시 참조될 확률이 높다는 시간 지역성, 그리고 참조된 주소의 인접한 주소가 참조될 확률이 높다는 공간 지역성이 있음.
21. 가용 메모리 영역이 줄어들때 나타나는 현상은?
22. IPC 의 종류 및 특징
'기타등등' 카테고리의 다른 글
x86 서버란? (0) | 2022.04.10 |
---|---|
Ansible 메모장 (0) | 2022.03.30 |
리눅스(Ubuntu)환경에서 Bazel 설치하기 (0) | 2021.02.05 |
인터프리터언어와 컴파일러 언어 (0) | 2021.01.06 |