면접대비를 위해 정리한 글입니다.
잘못된 내용이 보이거나 부족한 내용이 있다면 댓글에 적어주시면 감사하겠습니다
Q. 프로세스와 스레드의 차이를 설명해주세요
프로세스는 실행중인 프로그램이고
스레드는 프로세스 안에서 실행되는 흐름 단위입니다.
프로세스는 메모리와 CPU를 프로세스마다 할당받아서 사용하는데
스레드는 프로세스 안에서 다른 스레드와 메모리와 CPU를 공유해서 사용합니다.
Q. 멀티 프로세스와 멀티 스레드
멀티프로세스
하나의 응요프로그램을 여러개의 프로세스로 구성하여 각 프로세스가 하나의 작업을 처리하는 것.
여러개의 자식 프로세스 중 하나에 문제가 발생하면 그 자식 프로세스만 죽어 다른 영향이 확산되지 않는 장
멀티 스레드
하나의 응용 프로그램을 여러개의 쓰레드로 구성하고 각 쓰레드가 하나의 작업을 처리하는 것.
멀티 프로세스가 아닌 멀티 쓰레드를 사용하는 이유
자원의 효율성 증대
프로세스를 생성하여 자원을 할당하는 시스템 콜이 줄어들어 자원 관리가 효율적
처리 비용 감소 및 응답 시간 단축
프로세스 간의 통신보다 쓰레드 간의 통신 비용이 적다 .
Context Switching
CPU를 다른 프로세스로 전환하기 위해 이전의 프로세스 상태 레지스터 내용을 보관하고 다른 프로세스의 레지스터들을 적재하는 과정
Dead Lock
둘 이상의 프로세스들이 자원을 점유한 상태에서 서로 다른 프로세스가 점유하고 있는 자원을 요구하며 무한정 기다리는 현상을 의미
Dead Lock 발생조건
상호배제, 점유대기, 비선점, 환형대기
4가지가 모두 동시에 발생해야 함
Dead Lock 해결방법
1. 교착상태의 예방 (발생조건 중 하나를 부정함으로써 교착상태를 예방)
2. 교착상태의 회피 (교착상태 발생 가능성을 인정하고 발생하려 할 떄 적절히 피해가는 방법, 은행가 알고리즘 이용)
3. 교착상태의 발견 (교착 상태가 발생하도록 허용하고 발생하면 조사하여 결정해 내는 방법)
4. 교착상태의 회복 (교착상태 사이클이 없어질 때까지 프로세스들을 종료시키거나 자원 할당을 중단)
뮤텍스(Mutex)와 세마포어(Semaphore) 차이
세마포어는 여러개의 프로세스가 접근 가능한 공유자원을 관리하는 방식입니다.
뮤텍스는 한 번에 한 개의 프로세스만 접근 가능하도록 하는 방식입니다.
따라서 세마포어는 뮤텍스가 될 수 있지만, 뮤텍스는 세마포어가 될 수 없습니다.
또, 세마포어는 다른 프로세스가 세마포어를 해제할 수 있지만, 뮤텍스는 락을 획득한 프로세스만 락을 반환할 수 있습니다.
참고
- https://liamkwo.github.io/interview1/
- https://velog.io/@min9288/%EB%B0%B1%EC%97%94%EB%93%9C-%EA%B0%9C%EB%B0%9C-%EB%A9%B4%EC%A0%91-%EC%A7%88%EB%AC%B8%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C
'몰라 컴퓨터 일반 > 운영체제(OS)' 카테고리의 다른 글
무작정 운영체제를 공부하다가 (1) | 2024.02.19 |
---|---|
운영체제(OS) (2) | 2024.02.06 |