본문 바로가기

CS/운영체제(OS)

(16)
OS - 프로세스 동기화 개념 프로세스 동기화 프로세스 병행 (Concurrency) OS는 아주 빠른 시간에 프로세스를 스위칭한다. 때문에 사실은 하나의 프로세스만 화면에서 실행중이지만 마치 함께 실행중인 것 처럼 보인다. 이것을 프로세스 병행, 동시성이라 한다. 독립 프로세스와 협력 프로세스 독립 프로세스 단일 처리 시스템에서 수행하는 병행 프로세스, 다른 프로세스와 영향을 받지 않으며 독립적으로 실행된다. 협력 프로세스 우리가 사용하는 많은 프로그램은 협력 프로세스이다. 두 프로세스가 동일한 파일을 사용할 수도 있고 프로세스 하나가 파일을 읽는 동안 다른 프로세스가 쓰기를 실행하려 할 수도 있다. 프로세스 동기화 위 처럼 프로그램들이 하나의 자원에 접근하려하면 어떤 일이 발생할까. 가장 유명한 예제는 바로 은행 예제이다. A씨의..
OS - CPU 스케줄링(3), 프로세스의 생성과 소멸, 쓰레드 MultiLevel Queue 스케줄링 다단계 큐 스케줄링은 이전에 봤던 것 처럼 하나의 큐를 사용하는 것이 아닌 여러개의 큐를 사용하는 방법이다. 앞어 많은 프로세스들이 있었는데 운영체제 단계에서 인터럽트를 처리하는 프로세스도 있고 사용자와 인터랙티브하는 프로세스, 배치 프로세스, 컴파일러 등 많은 프로세스가 있는데 이들을 같은 큐로 관리하기 어렵기 때문에 나온 개념이다.' 위의 순서대로 우선순위가 매겨져 각 큐는 절대적인 우선순위를 가진다. 아래의 프로세스 큐가 실행되려면 위의 프로세스 큐가 모두 비어있어야한다. 만약 Interactive Processes가 실행되고 있던 중 System Processes작업이 큐에 들어오면 바로 프로세서를 반납해야한다. 각각의 큐는 독립된 스케줄링 기법을 사용한다...
OS - CPU 스케줄링(2) CPU 스케줄링은 Ready Queue의 프로세스들 중 무엇을 우선으로 cpu에 할당할지 정하는 스케줄링 기법이다. Shortest-Job-First First Come First Service (FCFS)는 들어온 순서부터 서비스하는 기법이었다. SJF는 가장 작업시간이 빠른 작업부터 서비스하는 것이다. 선점 vs 비선점 SJF는 선점과 비선점 방법 둘 다 구현할 수 있다. 선점: cpu가 일단 작업을 시작하면 프로세스가 종료되기 전 까지는 서비스 하는 프로세스를 변경하지 않는 방법이다. 비선점: cpu가 작업을 하고 있어도 작업을 빨리 끝낼 수 있는 프로세스가 들어온다면 그것 부터 처리한다. 이 방법은 최소 잔여 시간 방법으로도 불린다. 단, 이 방법은 우리의 컴퓨터에 실제로 적용하기는 힘들다. Pr..
OS - 프로세스 관리와 CPU 스케줄링 Context switching (문맥 전환) CPU가 프로세스에서 작업을 하던 중 인터럽트가 발생하거나 OS의 스케줄대로 프로세스가 변경될 수 있다. 프로세스가 변경될 때 PCB에 있던 정보를 저장하고, 새로 작업해야할 프로세스의 정보는 불러와야한다. 스케줄러가 선택한 프로세스에 실질적으로 프로세서를 할당하는 역할을 한다. 이러한 작업을 해주는 것을 Dispathcher 라 하며 디스패쳐는 OS의 프로세스 관리 부서에 있다. 디스패쳐는 운영체제 모드를 커널에서 유저로 변경하는 역할까찌 수행한다. 그러나 디스패쳐는 Context switching overhead를 일으킨다. 그러므로 너무 많은 전환은 성능에 좋지 않다. 그래서 CPU 스케줄러가 중요하다. 컴퓨터 구조를 간략하게 그려보면 다음과 같다. 하..
OS - 프로세스 관리 프로그램과 프로세스 프로그램: 하드디스크에 설치된 정적인 개체 메인 메모리에 적재되어 메모리 구조를 이루고 카운터나 레지스터 처럼 자원을 사용하며 사용자가 사용하는 개체 프로세스 생명주기 New: 하드디스크에 있다가 인터럽트에 의해 메인 메모리에 적재된 상태를 말한다. Ready: 메모리에 적재된 후 변수 초기화 같은 초기화를 마치고 cpu가 할당되면 바로 실행될 수 있는 상태이다. Running: cpu를 할당받고 작동중인 상태이다. wait: 프로그램이 실행 중 인터럽트가 발생해 잠시 유저 모드에서 커널 모드로 변경되어 프로그램이 대기중인 상태를 말한다. Terminated: 프로그램 종료프로세스 생명주기는 위 처럼 5가지 상태를 지닌다. 위 처럼 실행,대기,초기화를 계속 반복하다가 결국 종료된다. ..
OS - 운영체제의 주요 서비스: 프로세스, 메모리, 파일관리 운영체제가 하는 일은 마치 나라의 정부가 하는 일과 비슷하다. 직접 건물을 짓거나 무언가 하지 않지만 허가를 내주고 정책을 결정하는 등 모든것의 관리를 한다. 운영체제 별로 차이는 있지만 보통은 네가지의 서비스를 제공한다. 부팅 서비스 - ROM을 통한 컴퓨터 부팅시 서비스 사용자 서비스 - 프로그래머가 프로그래밍 작업을 쉽게 수행할 수 있도록 함. 시스템 서비스 - 시스템의 효율적인 동작을 보장(보호가 포함됨) 시스템 호출 - 프로그램이 운영체제의 기능을 서비스 받을 수 있는 프로그램과 운영체제 간의 인터페이스를 제공 이 외에도 네트워크 기능, 보호기능 등 많은 일을 한다. 이 중에서도 System Call을 알아보자. System Call 애플리케이션이 OS의 서비스가 필요할 때 호출하는 것을 말한다..
OS - 듀얼모드와 하드웨어 보호 듀얼모드와 하드웨어 보호 듀얼 모드 OS는 유저모드와 커널모드(관리자 모드, 특권 모드)로 나뉜다. 유저가 만약 모든 권한을 가진다면 하드웨어에게 해를 끼칠 수 있는 상황이 존재할 수 있다. I/O를 침범할 수 있다. 어떠한 프로그램이 OS상태를 바꾸거나 강제로 디스크를 탐색할 수 있다. 즉 해킹이나 불법 프로그램에 의해 의도치 않은 상황이 발생할 수 있다. 이러한 상황을 방지 하기 위해 OS는 듀얼 모드를 지원한다. CPU 레지스터는 flag를 가지고 있다. 사진의 mode bit가 레지스터가 갖고 있는 그것이다. 여기엔 여러가지 비트가 있는데 그 중 하나이다. flag비트에 따라 유저 모드와 커널 모드가 바뀌게 된다. 이것은 하나의 인터럽트로 작용한다. 인터럽트에 의한 설명은 이전 포스팅에 자세히 다..
OS - 인터럽트(Interrupt)의 이해와 실행과정 인터럽트는 번역하면 가로채기이다. 운영체제에서 인터럽트는 진행하던 명령에서 급한 새로운 명령을 위해 가로챈다는 의미로 쓰인다. 현재 모든 OS가 인터럽트 기반을 채택하고 있다. 기본적인 컴퓨터는 위의 사진처럼 CPU, Memory, Hard Disk의 형태를 갖는다. 처음 컴퓨터를 부팅할 때 컴퓨터에는 어떤 일이 일어날까? 먼저 ROM에서 부팅 명령어가 실행된다. 부팅 명령어는 하드디스크에서 OS가 설치된 위치를 찾아 OS를 메모리에 적재시킨다. 이렇게 되면 OS는 화면에 아이콘을 보여주고 사용자 인터페이스를 제공한다. 💡 HDD보다 SSD가 부팅이 빠른 이유가 여기 있다. 디스크에서 프로그램 위치를 찾고 프로그램을 적재하는 속도가 SSD가 훨씬 빠르기 때문이다. 이후 컴퓨터는 특정한 명령을 기다리며 아..