CS
OS (운영체제)와 컴퓨터
dhfkdlsj
2025. 2. 10. 00:11
🖥️ 운영체제(OS, Operating System)
OS(운영체제)란, 사용자가 컴퓨터를 쉽게 다룰 수 있도록 도와주는 인터페이스이다.
한정된 메모리 및 시스템 자원을 효율적으로 분배하는 역할을 한다.
📌 OS의 역할
CPU 스케줄링과 프로세스 관리
- CPU 소유권을 어떤 프로세스에 할당할지 결정
- 프로세스 생성 및 삭제, 자원 할당 및 반환 관리
메모리 관리
- 한정된 메모리를 각 프로세스에 효율적으로 할당
디스크 파일 관리
- 디스크 파일 저장 및 관리 방법 결정
I/O 디바이스 관리
- 마우스, 키보드 등의 I/O 디바이스와 컴퓨터 간 데이터 교환 관리
🔹 운영체제의 구조
🛠️ 시스템 콜 (System Call)
운영체제가 커널에 접근하기 위한 인터페이스
유저 프로그램이 운영체제의 서비스를 받기 위해 커널 함수를 호출할 때 사용
유저 모드 → 커널 모드로 전환 후 파일을 읽고 다시 유저 모드로 복귀
✅ 장점:
- 컴퓨터 자원에 대한 직접 접근 차단
- 프로그램 간 보호 기능 제공
🔹 Modebit
- 유저 모드(1) vs. 커널 모드(0) 구분
- 시스템 콜이 실행될 때 modebit 값을 참고하여 전환
🔹 Trap
- 소프트웨어 예외 발생 시 사용자 모드 → 커널 모드 전환
- 특정 이벤트 처리를 위해 커널이 개입하는 과정
- 소프트웨어에 의해 발생하는 예외나 특정 이벤트를 처리하기 위해 사용자 모드에서 커널 모드로 전환되는 과정
🏃♂️ 프로세스와 스레드
프로세스 (Process)
- 실행 중인 프로그램
- CPU의 스케줄링 대상
- 작업(Task)과 같은 의미로 사용됨
스레드 (Thread)
- 프로세스 내 작업의 흐름
- 프로세스 내 가장 작은 실행 단위
🔄 멀티 프로세싱 vs. 멀티 스레딩
멀티 프로세싱
✅ 여러 개의 프로세스를 동시에 실행하는 기법
✅ 여러 개의 프로세서가 병렬로 작업 처리
✅ 신뢰성이 높음 (특정 프로세스가 중단되어도 다른 프로세스로 대체 가능)
멀티 스레딩
✅ 하나의 프로세스 내에서 여러 개의 스레드 실행
✅ 스레드끼리 자원을 공유하여 효율성 증가
❌ 하나의 스레드에 문제가 생기면 다른 스레드에도 영향을 미칠 수 있음
🔗 공유 자원과 임계 영역
공유 자원 (Shared Resource)
- 여러 프로세스, 스레드가 함께 접근하는 자원
- 경쟁 상태(Race Condition): 두 개 이상의 프로세스가 공유자원을 동시에 읽기/쓰기 시 발생
임계 영역 (Critical Section)
- 둘 이상의 프로세스, 스레드가 공유 자원에 접근하는 순서에 따라 결과가 달라지는 코드 영역
- 해결 방법: 뮤텍스, 세마포어, 모니터 사용
- 이 3가지 방법 모두 상호 배제, 한정 대기, 융통성 조건을 만족한다.
✅ 임계 영역 문제 해결을 위한 조건
🔒 상호 배제 (Mutual Exclusion)
- 한 프로세스가 임계 영역에 들어갔을 때 다른 프로세스는 접근할 수 없음
⏳ 한정 대기 (Bounded Waiting)
- 특정 프로세스가 영원히 임계 영역에 들어가지 못하는 상태가 발생하면 안 됨
🔄 융통성 (Progress)
- 어떠한 프로세스도 임계 영역을 사용하지 않는다면, 임계 영역 외부의 프로세스는 자유롭게 접근 가능해야 함
- 이때, 프로세스들은 서로 방해하지 않아야 함
🔒 동기화 기법
1️⃣ 뮤텍스 (Mutex)
- 공유 자원을 lock() → unlock() 방식으로 제어
- 잠금과 잠금 해제의 두 가지 상태만 가짐
2️⃣ 세마포어 (Semaphore)
- 뮤텍스의 일반화된 형태
- wait() → 차례가 올 때까지 대기
- signal() → 다음 프로세스로 순서 넘김
- 종류:
- 바이너리 세마포어 (0과 1만 가능, 뮤텍스와 유사)
- 카운팅 세마포어 (여러 개의 값 가능, 자원 개수 제한)
모니터
3️⃣ 모니터 (Monitor)
- 모니터 큐를 통해 공유 자원 접근을 순차적으로 처리
- 세마포어보다 구현이 쉬우며, 상호 배제가 자동으로 적용됨
🚨 교착 상태 (Deadlock)
교착 상태란?
✅ 두 개 이상의 프로세스가 서로 가진 자원을 기다리며 중단된 상태
발생 조건
- 상호 배제 - 한 프로세스가 자원을 독점
- 점유 대기 - 특정 프로세스가 점유한 자원을 다른 프로세스가 요청
- 비선점 - 다른 프로세스의 자원을 강제로 가져올 수 없음
- 환형 대기 - 프로세스 1과 2가 서로의 자원을 요구하며 기다리는 상황
교착 상태 해결 방법
- 사전 예방 - 자원 할당 시 교착 상태 발생 조건을 방지
- 회피 (은행원 알고리즘)
- 자원의 최대 요청량을 기반으로 안전 여부 판단 후 할당
- 탐지 후 해결
- 사이클이 존재하는지 탐색 후 해당 프로세스 종료
- 강제 종료
- 교착 상태 발생시 작업 종료
- ex) 가끔 프로세스를 실행시키다가 '응답 없음'이라고 뜨는 경우
📌 추가: 은행원 알고리즘 (Banker's Algorithm)
- 자원의 총량과 현재 할당된 자원의 양을 기준으로 안정/불안정 상태 구분
- 안정 상태 유지 가능할 경우만 자원 할당
- 불안정 상태 초래 가능성이 있는 경우 요청 거절
📚 참고 자료
- 면접을 위한 CS 전공지식 노트
- Operating System Concepts 10th - SILBERSCHARTZ
- Math Coding Blog
- RDAV Blog
- Jokerkwu Blog