본문 바로가기

IT234

운영체제 #7 프로세스 동기화의 고전적인 문제Bounded Buffer (Producer-Consumer Problem, 유한 버퍼 문제)생산자와 소비자가 공유 버퍼를 사용할 때 발생하는 동기화 문제.→ 버퍼가 가득 찼을 때 생산자는 대기, 버퍼가 비었을 때 소비자는 대기해야 한다.Reader-Writer Problem (독자-저자 문제)여러 프로세스가 같은 데이터베이스에 접근할 때 발생.→ 여러 Reader는 동시에 접근 가능하지만, Writer는 단독으로 접근해야 한다.Dining Philosophers Problem (식사하는 철학자 문제)여러 프로세스가 한정된 자원(포크)을 공유하면서 교착 상태나 기아 상태 없이 자원을 사용하는 문제.동기화 문제 해결에 사용되는 도구들Mutex / Lock상호 배제를 보장하는 .. 2025. 8. 20.
운영체제 #6 공유 데이터 (Shared Data) 정의여러 프로세스(process) 또는 **스레드(thread)**가 동시에 접근할 수 있는 데이터.위치메인 메모리(RAM) 안에 있는 전역 변수, 힙 영역 데이터, 커널 자원 등혹은 파일, 데이터베이스, I/O 버퍼 같은 외부 저장장치도 공유 데이터가 될 수 있음.특징동시에 여러 주체가 접근할 수 있기 때문에, 동기화(synchronization) 없이는 값이 손상될 수 있음.예시은행 계좌 잔액두 명이 동시에 잔액 = 잔액 - 100 같은 출금을 하면, 실행 순서에 따라 최종 잔액이 달라질 수 있음.잔액(계좌 금액)은 공유 데이터. 경쟁 조건 (Race Condition)정의여러 프로세스가 공유 데이터에 동시에 접근할 때 발생하며, 실행 순서에 따라 결과가 달라질.. 2025. 8. 19.
운영체제 #5 CPU 스케줄링 개요역할: 준비 큐(Ready Queue)에 있는 프로세스 중 하나를 선택하여 CPU를 할당.디스패처(Dispatcher): 선택된 프로세스에 실제로 CPU 제어권을 넘겨주는 모듈.선점(Preemptive) vs 비선점(Non-preemptive)선점: 실행 중인 프로세스를 중단시키고 CPU를 다른 프로세스에 할당 가능. (현대 OS 대부분 채택)비선점: 실행 중인 프로세스가 자발적으로 CPU를 반납해야 다른 프로세스 실행 가능. 스케줄링 성능 평가 기준 (5가지)CPU 이용률 (CPU Utilization) – CPU가 쉬지 않고 일하는 비율.처리량 (Throughput) – 단위 시간당 완료된 프로세스 개수.총 처리 시간 (Turnaround Time) – 프로세스 제출 시점부터 종료.. 2025. 8. 18.
운영체제 #4 스레드(Thread)의 개념스레드는 CPU 사용의 기본 단위이며, 실행 컨텍스트(프로그램 카운터, 레지스터 집합, 스택)를 가진다.동일한 프로세스에 속한 스레드들은 코드 영역, 데이터 영역, 열린 파일 등 대부분의 자원을 공유한다. 다중 스레드(Multithreading)의 장점응답성(Responsiveness)하나의 스레드가 블로킹되더라도 다른 스레드가 계속 실행되어 사용자 응답성을 유지할 수 있다.자원 공유(Resource Sharing)스레드 간 데이터 공유가 용이하며, 같은 프로세스 자원을 공유하므로 통신 비용이 적다.경제성(Economy)프로세스 생성보다 스레드 생성/전환이 비용이 적게 든다. (문맥 교환 시 공유 메모리 사용 가능)확장성(Scalability)멀티코어 시스템에서 병렬 실행을 통.. 2025. 8. 17.
운영체제 #3 프로세스 개념프로세스(Process): 실행 중인 프로그램을 의미하며, 현재 활동 상태는 프로그램 카운터(PC)와 다른 CPU 레지스터 값으로 표현된다.메모리 레이아웃: 프로세스는 메모리에서 일반적으로 다음 4가지 영역으로 구성된다.텍스트(Text): 실행 코드(명령어) 저장데이터(Data): 전역 변수, static 변수 저장힙(Heap): 동적 메모리 할당 영역스택(Stack): 함수 호출 정보, 지역 변수 저장프로그램 카운터 정의CPU가 다음에 실행할 명령어의 메모리 주소를 저장하는 레지스터역할- 프로세스 실행 중 다음 명령어를 어디서 읽어야 할지 CPU에게 알려줌- 문맥 교환 시, 현재 실행 중인 명령어의 위치를 저장해 두었다가, 나중에 이어서 실행할 수 있도록 함예시어떤 프로세스가 1000번지 .. 2025. 8. 16.
운영체제 #2 시스템 콜(System Call)정의: 응용 프로그램이 OS가 제공하는 서비스를 이용하기 위한 프로그래밍 인터페이스사용 방법: API를 통해 접근 (예: C 표준 라이브러리는 Unix/Linux 시스템 콜 인터페이스 제공)6대 기능 범주프로세스 제어(Process Control)파일 관리(File Management)장치 관리(Device Management)정보 유지 관리(Information Maintenance)통신(Communication)보호(Protection) 링커컴파일된 여러 개의 오브젝트 파일과 라이버리를 하나로 묶어 실행 파일을 만든다.심볼 결합 (Symbol Resolution)여러 소스 파일에서 정의 및 참조된 함수와 변수를 서로 연결예: main.c에서 print() 함수를 호출하.. 2025. 8. 15.