본문 바로가기

Computer Science16

Operating System - Ch08. Deadlock 본 글은 Operating System Concepts 10판을 기준으로 작성되었습니다...! 생각하는 철학자 알고리즘에서 서로가 서로를 기다리는 데드락 문제가 발생하는데, 데드락에 대해서 알아보자. 데드락이란 자신이 어떤 자원을 사용하고자 할 때 그 자원이 다른 누군가가 사용중이라면, 그 자원을 쓸 수 있을 때까지 대기하는데 그 대기가 영원히 지속되는 것을 말한다. 결국에는 모든 프로세스가 하나의 프로세스의 이벤트를 기다리는 총체적 난국의 상황이 된다. 데드락이 발생할 네 가지 충분 조건은 다음과 같다. 넷 모두 만족하면 데드락이 발생함. 1. Mutual exclusion (상호배제): 동시에 오직 하나의 프로세스만 자원을 사용할 수 있다. 멀티 프로세스 환경에서 필연적으로 발생하는 경우. (mute.. 2022. 6. 1.
Operating System - Bootstrapping PC의 전원 버튼을 누르면 메인보드의 전원 단자가 쇼트가 나면서 파워에 불이 들어온다. 1. CPU 초기화 및 BIOS 로드 제일 먼저 CPU가 스스로를 초기화하고 고정되어 있는 주소인 0xffffffff0에 있는 instruction을 수행. 여기에는 뭐가 있지? BIOS가 있다. (Basic Input Output System) CPU가 가장 먼저 수행하는 명령어가 저장되어있는 주소에 BIOS가 있다는 것. 전원이 꺼져도 데이터가 살아있어야 하니 ROM에 저장됨. 2. BIOS의 하드웨어 검사 BIOS/UEFI로 jump한다. CPU는 앞서 초기화하면서 점검을 마쳤고, CPU를 제외한 나머지 필수 요소(Memory, GPU, I/O devices...)들이 정상적으로 저장되어 있는지를 체크한다. 이를.. 2022. 6. 1.
Operating System - Ch07. Synchronization example 본 글은 Operating System Concepts 10판을 기준으로 작성되었습니다...! 챕터 6에서는 동기화 문제에 대한 이야기를 여럿 했었다. 이번 챕터에서는 프로세스 동기화 예시에 대해서 알아보자. Typical Sychronization Problems... 보통 Semaphore로 해결할 수 있고, Mutex lock과 Condition variables로 해결할 수도 있다. 1. Bounded-Buffer Problem (한정 버퍼 문제, Producer-Consumer problem) 공유 자원을 두 프로세스가 동시에 이용하기 때문에 꼬이는 문제. Race condition이라고 함. // 생산자 코드 void Producer(data) { while(count == N) {}; buf.. 2022. 6. 1.
Operating System - Ch05. CPU Scheduling 본 글은 Operating System Concepts 10판을 기준으로 작성되었습니다...! 이번에는 CPU 스케줄링에 대해서 알아보자. CPU Scheduler: 어떤 녀석에게 CPU자원을 사용할 권한을 줄 것인가를 결정함 CPU burst: I/O 연산이 아닌 CPU연산을 중심으로 하는 구간 I/O burst: I/O 요청을 위해서 기다리는 구간 (I/O wait) CPU-bound process: CPU burst의 비율이 높은 녀석, 연산이 많이 필요한 경우. 단순하면서 높은 성능을 내도록 설계 ex) 슈퍼컴퓨터, Simulation I/O-bound process: I/O burst의 비율이 높은 프로세스, 네트워크 통신이나 로컬 파일과 동작하는 경우가 많을 때. 컴퓨터와 유저간의 응답성이 중.. 2022. 4. 21.
Operating System - Ch.04 Thread & Concurrency 본 글은 Operating System Concepts 10판을 기준으로 작성되었습니다...! Process란 "실행 중"인 program을 의미한다 Program은 디스크에 그냥 있는 상태. 작성된 프로그램이 메모리 공간을 할당받고 실행중인 상태. 음... Process는 좀 무겁네... address space도 크고,, PCB 크기도 크고... OS 자원도 너무 많이 먹어... 많은 데이터와 많은 저장공간이 필요하네... 또 여러 프로세스 돌리면서 스케듈링할 때 생기는 오버헤드도 있고... 프로세스끼리의 소통이 커널을 통해 이루어지니까 좀 비싸다... 어떻게 해결 안되나? 하나의 단일 process 안에서 여러 execution path를 만들면 가볍게 동작하지 않을까? 그리하여... ★Thread.. 2022. 4. 19.
Operating System - Ch.01 Introduction 본 글은 Operating System Concepts 10판을 기준으로 작성됬습니다...! 1장에서는 운영체제의 개념과 컴퓨터의 기본 구조에 대해 살펴봅니다. 1.1 What Operating Systems Do Operating System(운영체제)란? 정확하게 운영체제를 정의할 수는 없지만, 간단히 말하면 운영체제는 컴퓨터 하드웨어 자원을 관리하고, 컴퓨터 사용자가 컴퓨터를 사용하기 편리하도록 서비스를 제공하는 소프트웨어다. 운영체제는 우리가 흔히 사용하는 PC나 Laptop에는 물론 스마트폰, 자동차, 가전제품 등에도 들어간다. 스마트폰에 들어가는 Android는 본래 운영체제라기보다는 Platform 취급을 했었다고 하는데, 지금은 하나의 운영체제로서 인정받고 있다. 자동차나 가전제품같은 경우.. 2022. 4. 17.