운영체제(10)
-
프로세스 스케줄링 알고리즘, FCFS
프로세스 스케줄링 목적 프로세스 스케줄링은 CPU가 끊임없이 일할 수 있도록 스케줄을 짜주는 것을 의미한다. 한정된 자원으로 높은 성능을 이끌어내기 위해서는 CPU가 놀지 않고 계속 일을 할 수 있게 해줘야하기 때문에 적절한 타이밍에 연속적으로 일을 할 수 있도록 스케줄을 짜줘야한다. 프로세스 스케줄링의 목적은 시스템 성능을 향상시키는 것이며, 구체적으로 정리하자면 다음과 같다. 공평성: 모든 프로세스가 시스템 자원을 공평하게 배정받아야 하며, 특정 프로세스를 배제하지 않는다. 효율성: 시스템 자원은 노는 시간 없이 일을 해야한다. 안정성: 우선 순위를 사용하여 중요한 프로세스가 먼저처리되도록 해야한다. 반응시간 보장: 응답이 없는 경우, 사용자는 시스템이 멈춘 것으로 가정하기 때문에 시스템은 적절한 시..
2021.01.15 -
프로세스 스케줄링의 목적, 기준, 단계, 방법
프로세스 스케줄링 내 나이 28살, 오래 살았다고 생각하진 않지만 인생사에서 무엇인가를 선택하는 것은 굉장히 중요하다고 말할 수 있다. 우리는 살면서 항상 선택의 기로에 놓인다. 왜냐하면 수 많은 선택지도 있지만, 중요하다고 생각하는 선택지가 한 개만 있는 것은 아니기 때문이다. 굉장히 일상적인 예시를 들자면, 중국집에서 메뉴를 고를 때도 우리는 흔히 짜장면과 짬뽕 중 무엇을 선택할 건지에 대해 항상 고민한다. 본론으로 돌아와보자. 중요한 선택을 해야하는 것은 운영체제도 마찬가지인 것 같다. 프로세스의 정의를 기억하는가? 프로세스는 작업이 커널에 등록된 상태를 얘기한다. 예를들어 CPU 한 개에 프로세스가 두 개가 있는 경우, 각 프로세스는 CPU 1개에 존재하는 자원을 번갈아가면서 사용해야한다. 즉, ..
2020.10.28 -
스레드 관리
스레드 이전 포스팅(인터럽트)에서 나는 인터럽트와 문맥교환(Context Switching)에 대해 이야기를 했다. 운영체제는 문맥교환을 통해 이전에 작업했던 프로세스를 이어서 작업할 수 있지만, 너무 잦은 문맥교환은 오버헤드와 비용을 증가시킨다. 이 문제를 해결하기 위해서 운영체제는 스레드라는 단위를 관리하게 된다. 그렇다면 스레드는 무엇인가? 스레드를 설명하기 위해서 상위개념인 프로세스라는 것을 가져오려고 한다. 프로세스는 요청받은 작업이 커널에 등록된 상태를 말한다. 간단히 실행중인 프로그램이라고 말할 수 있다. 프로세스가 하는 일은 두 가지 요소로 나눌 수 있는데, 첫째는 자원을 할당받는 것이고, 둘째는 할당받은 자원을 제어하는 것이다. 이 요소 중에 제어부분만 따로 떼어놓은 것을 스레드라고 한다..
2020.10.07 -
인터럽트
1. 인터럽트 공부를 할 때, 혼자서 하는 것보다 친구랑 같이하면 집중력은 덜 할지 몰라도 재미있다. 왜냐하면 공부가 안될 때 친구를 콕 찔러서 같이 놀다오면 되기 때문이다. 여기서 친구는 내가 콕 찌른다는 행동을 언제 할지 예상할 수 있을까? 없을 것이다. 이렇게 예상치 못하고 외부에서 발생한 이벤트를 인터럽트라고한다. 인터럽트의 종류는 다음과 같다. 입 출력(I/O) 클럭(Clock) 콘솔 프로그램 Machine Check Inter-Process System Call 일반적으로 7개 종류의 인터럽트가 있지만, 인터럽트의 처리과정은 대략적으로 다음과 같을 것이다. 위 과정을 좀 더 자세하게 설명해보면 다음과 같다. 지금 사용자는 어떤 프로그램을 실행시키는 중이다. 그 실행 중인 프로그램 즉 프로세스를..
2020.10.06 -
프로세스 관리
작업과 프로세스 JOB(작업): 컴퓨터 시스템에 실행 요청 전의 상태 PROCESS(프로세스): 요청을 받은 후 시스템(커널)에 등록된 작업을 말한다. 따라서 프로세스는 시스템 성능향상을 목적으로 커널에 의해 관리된다. 자원: 커널의 관리하에 프로세스에게 할당/반납 되는 수동적 개체 PCB(Process Control Block) 프로세스 제어 블록(PCB, Process Control Block)은 프로세스 관리에 필요한 정보를 저장한 블록을 말하며, 프로세스가 생성될 때(프로그램 작업이 시스템 커널에 등록될 때) 생성되는 블록이다. 운영체제에 따라 다르지만 일반적으로 PCB는 다음과 같은 정보가 포함되어 있다. 프로세스 식별자 프로세스 상태: 준비, 실행, 대기, 완료, 유예준비, 유예대기 프로그램 ..
2020.10.05 -
운영체제의 구조
1. 커널 커널은 운영체제의 핵심을 말한다. 이것은 시스템 관리와 같은 가장 빈번하게 사용되는 기능들을 담당한다는 것이다. 따라서 커널은 항상 메모리 위에 올라가 있다. 커널의 동의어로는 Neucleus, Supervisor, Resident, Control-Program등이 있다. 2. 유틸리티 유틸리티는 커널 외 나머지 부분을 말한다. 주로 서비스를 제공하는 프로그램에 해당되며, 항상 메모리 위에 탑재되어 있는 커널과는 다르게 유틸리티는 필요한 순간에만 메모리에 올려진다. 3. 운영체제의 구조 (1) 단일 구조 단일 구조는 커널 내 모듈과 직접통신하는 구조를 말한다. 커널이 모든 기능을 담당하기 때문에 거대화되지만, 오류나 추가기능을 구현하는데 있어서 유지보수가 어렵다는 단점이 있다. (2) 계층 구..
2020.10.04