목록OS (6)
hmk run dev
교착 상태 해결 - 예방 - 회피 - 검출 후 회복 교착 상태 예방 참고로, 교착 상태 조건 중 하나라도 충족되지 않는다면 교착상태는 절대로 발생하지 않는다. - 애초에 교착 상태가 발생하지 않도록 예방 - 교착 상태 발생 조건(상호 배제, 점유와 대기, 비선점, 원행 대기) 중 하나를 없애버리기 상호배제 없애기 모든 자원을 공유 가능하게 만든다? => 이론적으로 가능하지만 현실적인 해결법은 아니다. 점유와 대기 없애기(자원을 할당받은 상태에서 자원을 대기하는 것) 특정 프로세스에 자원을 모두 할당하거나, 아예 할당하지 않는 방식으로 배분 => 자원의 활용률을 낮출 수 있는 방식 비선점 조건을 없애기 선점이 가능한 자원(e.g CPU)에 한해 효과적 => 모든 자원이 선점 가능한 것은 아니다. (한 프..
프로세스가 실행이 되려면 자원이 필요합니다 두 개 이상의 프로세스가 각자 갖고 있는 자원들을 그저 기다리기만 한다면, 그 어떤 프로세스도 실행되지 못하고 이를 교착상태라고 합니다. 식사하는 철학자 문제로 엿보는 교착상태 보이는 것처럼 원형 식탁에 다섯 명의 철학자가 앉아 있고 철학자 앞에는 음식과 포크가 있습니다. 음식을 먹으려면 꼭 2개의 포크가 필요합니다. 모든 철학자들이 동시에 위와 같은 순서로 식사를 한다면, 모든 철학자들이 식사를 하지 못하게 된다. 이런 식으로 일어나지 않을 사건을 기다리며 진행이 멈춰 버리는 현상을 "교착상태"라고 합니다. 여기서 철학자는 프로세스고 포크는 실행에 꼭 필요한 자원 식사는 자원을 이용함 => 실행에 빗댈 수 있습니다. 서로가 점거하고 있는 자원을 서로가 기다리면..
CPU 스케줄링이란? 운영체제가 프로세스들에게 공정하고 합리적으로 CPU 자원을 배분하는 것 컴퓨터 전체 성능과 직결되는 중요한 과정 가장 공정한 CPU 스케줄링? CPU를 사용하고 싶어 하는 프로세스들이 차례로 돌아가면 사용? 빨리 처리해야 하는 프로세스가 있기 때문에, 즉 프로세스마다 우선순위가 다르기 때문에 그리 좋은 방법이 아니다. 입출력 작업이 많은 프로세스(입출력 집중 프로세스)의 우선순위는 CPU 작업이 많은 프로세스(CPU 집중 프로세스)의 우선순위보다 높다. 대부분의 프로세스는 CPU와 입출력장치를 둘다 사용하는 경우가 많다. ex) CPU를 썼다 키보드를 쓰고, 보조기억 장치를 쓰고, 모니터를 쓰고 등등 비교적 입출력 작업을 덜쓰는 CPU 집중 프로세스들은 컴파일, 수학연산, 그래픽 계..
스레드란? 스레드는 프로세스를 구성하는 실행 흐름의 단위 하나의 프로세스는 최소 하나 이상의 스레드를 가지고 있다. 단일 스레드 프로세스 실행 흐름이 하나인 프로세스 멀티 스레드 프로세스 실행 흐름이 여러 개인 프로세스 => 프로세스를 이루는 여러 명령어 동시 실행 가능 스레드의 구성요소 스레드 ID, 프로그램 카운터를 비롯한 레지스터 값, 스택 등 실행에 필요한 최소한의 정보를 가지고 있고, 스레드는 프로세스 내에 같은 자원을 공유한다. 프로세스와 스레드의 경계는 모호하다? 멀티 프로세스와 멀티 스레드 동일한 작업을 수행하는 단일 스레드 프로세스 여러 개 실행 vs 하나의 프로세스를 여러 스레드로 실행 프로세스끼리는 기본적으로 자원을 공유하지 않지만, 스레드는 같은 프로세스 내에서 자원을 공유할 수 있..
프로세스 직접 확인하기 포그라운드 프로세스 - 사용자가 볼 수 있는 공간에서 실행되는 프로세스 백그라운드 프로세스 - 사용자가 볼 수 없는 공간에서 실행되는 프로세스 - 사용자와 상호작용하지 않고 그저 정해진 일만 수행하는 프로세스 ex) 데몬, 서비스 MAC에서 현재 활성 중인 프로세스 살펴보기 프로세스 제어블록 모든 프로세스는 실행을 위해 CPU가 필요하다. But, CPU 자원을 한정되어있다. 프로세스들은 돌아가며 한정된 시간 만큼만 CPU 이용 - 자신의 차례에 정해진 시간만큼 CPU 이용 - 타이머(타임아웃) 인터럽트가 발생하면 차례 양보 빠르게 번갈아 수행되는 프로세스들을 관리해야 이를 위해 사용하는 자료구조가 프로세스 제어블록 (이하 PCB) - 프로세스 관련 정보를 저장하는 자료구조 - 마..
우리가 작성한 프로그램은 대부분 운영체제에 의해 관리되고 실행된다. 운영체제는 현존하는 프로그램 중 규모가 가장 큰 프로그램 중 하나 (참고로, 리눅스 운영체제 소스코드 라인수만 해도 2700만줄 이라고 한다) 운영체제가 제공하는 기능은 다양하다. 그러나, 가장 많이 사용되는 가장 핵심적인 서비스는 존재한다. 컴퓨터 자원에 접근하고 조작하는, 프로그램이 올바르고 안전하게 실행하는 기능등등.. 커널 운영체제의 핵심 서비스를 담당하는 부분 운영체제가 방대한 크기의 프로그램일 지라도 커널은 대동소이하다. 대부분의 전공서는 운영체제에 대해 설명할때 커널에 대해 설명한다. 고로 이 글에서 커널 = 운영체제라고 봐도 무방하다. (UI는 운영체젠에는 속하지만 커널에는 속하지 않음) 시스템 콜과 이중 모드 사용자가 실..