본문 바로가기

운영체제13

[OS] 메인메모리(Main Memory) 사용자 프로그램의 다단계 프로세스 주소 바인딩(Address binding) 주소 바인딩 프로그램 명령 및 데이터를 실제 메모리 주소에 연결하는 프로세스 주소 바인딩의 세 단계 컴파일 시간 바인딩(Compile time binding) 로드 시간 바인딩(Load time binding) 실행 시간 바인딩(Execution time binding) 컴파일 시간 바인딩(Compile time binding) 컴파일 시간에 메모리 위치를 알면 절대 주소의 절대 코드를 생성할 수 있다. 시작 위치가 변경되면 코드를 재컴파일해야 한다. 로드 시간 바인딩(Load time binding) 컴파일 시간에 메모리 위치를 알 수 없는 경우, 상대 주소로 재배치 가능한 코드를 생성할 수 있다. 시작 위치가 변경된 경우에만.. 2023. 4. 24.
[OS] 교착상태(Deadlocks) 교착상태란 세마포어 사용 예 교착상태 차단된 프로세스 집합의 경우 각 프로세스는 리소스를 보유하고 있으며 집합의 다른 프로세스가 보유한 리소스를 획득하기 위해 대기 교착 상태 특성화 시스템 모델링 프로세스: P1, P2, … Pn. 자원 유형: R1, R2, …, Rm CPU 주기, 메모리 공간, I/O 장치, 파일 등. 각 리소스 유형의 Ri에는 Wi 인스턴스가 있다. 각 프로세스는 다음과 같이 리소스를 활용 request use release 네 가지 조건이 동시에 유지되면 교착 상태가 발생 상호 배제(Mutual exclusion) 한 번에 하나의 프로세스만 리소스를 사용 가능 점유 및 대기(Hold and wait) 하나 이상의 리소스를 보유한 프로세스가 다른 프로세스에서 보유한 추가 리소스를 획.. 2023. 4. 17.
[OS] 동기화 도구 경쟁 상태(Race Condition) 공유 데이터에 동시 액세스하면 데이터 불일치를 초래할 수 있다. 경쟁 상태 여러 프로세스가 동시에 공유 데이터에 액세스하고 조작하는 상황. 경쟁 상태를 방지하려면 동시 프로세스를 동기화해야 한다. 유니프로세서 환경에서는 CPU 스케줄러에 의해서도 경쟁 상태가 발생할 수 있다. 크리티컬 섹션 문제 크리티컬 섹션 공유 데이터에 액세스하는 코드 세그먼트 크리티컬 섹션 문제 한 프로세스가 크리티컬 섹션에서 실행 중일 때 다른 프로세스가 크리티컬 섹션에서 실행되지 않도록 한다. 프로세스가 협력하는 데 사용할 수 있는 프로토콜을 설계해야 한다. 일반적인 프로세스 Pi의 일반적인 구조 do { entry section critical section exit section rem.. 2023. 4. 3.
[OS] CPU 스케줄링 CPU-I/O 버스트 주기 CPU 버스트와 I/O 버스트의 교대 시퀀스 CPU 버스트 시간 히스토그램 CPU 스케줄러 CPU 스케줄러 실행할 준비가 된 프로세스 중에서 프로세스를 선택 CPU 스케줄링 결정은 다음과 같은 경우에 발생할 수 있다. 프로세스가 실행 상태(running)에서 대기 상태(waiting)로 전환(예: I/O 요청) 프로세스가 실행 상태(running)에서 준비 상태(ready)로 전환(예: 타임 슬라이스 만료) 프로세스가 대기(waiting)에서 준비 상태(ready)로 전환(예: I/O 완료) 프로세스가 종료 → 1, 4 스케줄링은 비선점적(non-preemptive) → 2, 3 스케줄링은 선점적(preemptive) 디스패처(Dispatcher) CPU 스케줄러가 선택한 프로.. 2023. 3. 27.
[OS] 쓰레드와 프로세스 쓰레드 웹 서버(Web server) 웹 페이지를 전송하는 컴퓨터 프로그램 웹 서버는 한 번에 많은 클라이언트에 서비스를 제공 웹 서버가 I/O 작업을 수행하는가? 차단 다른 클라이언트의 요청을 처리할 수 없다. 동시 서비스에는 많은 서버 프로세스가 필요 메모리 공간을 낭비 프로세스 생성 시간 지연 쓰레드가 필요하다. 공유 가능 : 코드, 데이터, 리소스 공유 불가 : 레지스터 값, 스택 쓰레드 CPU 활용도의 기본 단위 각 프로세스는 많은 쓰레드를 포함 가능 공유 가능 쓰레드 코드, 데이터, 힙(heap) 파일 열기 신호 처리기(signal handlers) 작업환경(현재 디렉토리, 사용자 ID 등) 고유 쓰레드(공유 불가) 스택 레지스터 쓰레드 ID 단일 및 다중 쓰레드 프로세스 쓰레드 vs 프로세스.. 2023. 3. 20.