알고리즘 성능 비교 기준

• CPU 사용률

• 처리량 (단위 시간당 완료된 프로세스의 개수)

• 총 처리 시간 (준비 큐에서 대기한 시간 + CPU에서 실행하는 시간 + I/O 시간)

• 대기 시간 (준비 큐에서 대기하는 시간)

• 응답 시간 (요구를 제출한 후 첫번째 응답이 나올 때 까지 걸린 시간)


FCFS (First Come First Served)

• 선입 선처리 스케줄링 (First Come, First Served Scheduling)

    ◦  CPU를 먼저 요청한 프로세스가 먼저 할당받는다.

    ◦  선입선출(FIFO) 큐를 이용해 구현할 수 있다.

 

• 장점

    ◦  가장 간단한 알고리즘으로 구현하기 쉽고 이해하기도 쉽다.

    ◦  기아현상이 발생하지 않는다.

    ◦  프로세서가 지속적으로 프로세스를 처리하므로 처리율 자체는 높다.

 

• 단점

    ◦  대기시간이 최소가 됨을 보장하지 못한다. (호위 효과(convoy effect))

         -  예) 실행 시간이 짧은 프로세스부터 처리할 때 보다 대기 시간이 현저히 길어질 수 있다.

    ◦  비선점 방식이므로 대화식 프로세스에는 부적합하다.


SJF (Shortest Job First)

• 최단 작업 우선 스케줄링 (Shortest Job First Scheduling)

    ◦  실행 시간이 짧은 프로세스부터 CPU를 할당받는다

 

• 장점

    ◦  평균 대기 시간이 최소가 되는 알고리즘이다.

 

• 단점

    ◦  프로세스를 실행해보기 전에는 얼마의 시간이 소요되는지 알 수 없기 때문에(예측 불가능한 I/O 대기시간까지 실행시간에

         포함되므로) 이론적으로만 구현 가능한 알고리즘이다.

 

• 프로세스 실행 시간을 예측하는 방법

    ◦  다음 프로세스 실행 시간을 이전의 프로세스 실행 시간들의 지수평균으로 예측하곤 한다.

    ◦  양 변에 T’n+1 과 T’n 이 있는 재귀식임을 알 수 있다.

         -  t’n = n번째 프로세스의 길이

         -  T’n+1 = 다음 프로세스의 길이


SRF (Shortest Remaining Time First)

• 최소 잔여 시간 우선 스케줄링 (Shortest Remaining Time First Scheduling)

    ◦  프로세스가 실행되고 있는 도중에 새로운 프로세스가 Ready Queue 에 도착할 수 있다.

    ◦  이 때 새로운 프로세스의 실행 시간이 실행중인 프로세스의 잔여 시간보다 짧다면 현재 프로세스를 중단하고

         더 짧은 프로세스를 실행시킨다.

    ◦  도중에 중단된 프로세스는 잔여 시간만큼의 길이로 다시 Ready Queue 에 들어간다.

    ◦  프로세스가 Ready Queue 에 도착한 시기와 각 프로세스의 길이 정보를 고려해야 한다.

 

• 장점

    ◦  SJF 보다 더 짧은 평균 대기 시간을 갖는다.

 

• 단점

    ◦  SJF와 동일한 이유로 실 상황에서 구현이 불가능하다.


Round Robin

• 라운드 로빈 스케줄링 (Round Robin Scheduling)

    ◦  프로세스가 도착한 순서대로 실행하되, 정해진 실행 시간 제한을 프로세스에 둔다.

         -  시간 할당량 또는 타임 슬라이스 라고 부른다.

         -  CPU 스케줄러는 할당량이 끝나면 인터럽트를 걸도록 타이머를 설정한다.

    ◦  할당된 시간보다 먼저 완료되는 경우 프로세스가 CPU를 자발적으로 반납한다.

    ◦  할당된 시간 안에 완료되지 못한 프로세스는 Ready Queue 의 맨 마지막에 배치된다.

 

• 장점

    ◦  특정 프로세스가 CPU 를 독점하지 않고 공평하게 이용할 수 있다.

 

• 단점

    ◦  대기시간이 최소가 됨을 보장하지 못한다.

    ◦  시간 할당량이 너무 크면 FCFS 알고리즘과 다를게 없어진다.

    ◦  시간 할당량이 너무 작으면 문맥 교환 빈도수가 늘어나고, 그만큼 오버헤드가 누적된다.

         -  적절한 시간 할당량을 잘 정하는 것이 중요하다.

         -  일반적으로 한 프로세스 집합의 80% 정도가 시간 할당량보다 짧거나 같으면 좋다.


Priority Scheduling

• 우선순위 스케줄링 (Priority Scheduling)

    ◦  정해진 우선순위에 따라, 가장 높은 우선순위의 프로세스부터 CPU를 할당한다.

    ◦  우선순위는 다양한 내/외부적 기준에 따라 세워질 수 있다.

         -  시간 제한 / 메모리 요구 / 열린 파일의 수 / I.O 대기시간과 실행 시간의 비율 / 프로세스의 중요성 등

    ◦  새로 도착한 프로세스의 우선순위가 현재 실행중인 프로세스 보다 높은 경우

         -  선점형 : 새로 도착한 프로세스가 CPU를 할당받고, 실행되던 프로세스는 준비 큐로 들어간다.

         -  비선점형 : 선점 없이 Ready Queue 의 맨 앞쪽에 배치된다.

 

• 장점

    ◦  각 프로세스의 중요성에 따라 작업을 수행하므로 합리적이다.

    ◦  실시간 시스템에서 사용 가능하다.

 

• 단점

    ◦  기아 상태(Starvation)(무한 봉쇄) 문제

         -  낮은 우선순위의 프로세스가 영원히 실행되지 못하는 문제가 발생할 수 있다.

    ◦  노화(Aging) 기법으로 해결하기

         -  Ready Queue 에서 대기하고 있는 프로세스들의 우선순위를 점차 증가시키는 방법

         -  예) 주기적으로 1초마다 대기중인 프로세스의 우선순위를 1씩 증가시킨다.


MLQ (Multilevel Queue)

• 다단계 큐 스케줄링 (Multilevel Queue Scheduling)

    ◦  우선순위마다 별도의 큐를 가지는 구조

    ◦  각 큐마다 서로 다른 스케줄링 알고리즘이 사용될 수 있다.

    ◦  프로세스가 큐에 한번 할당되면 다른 큐로 이동하지 않는다.

 

• 장점

    ◦  단일 큐로 프로세스를 관리할 때 드는 O(n) 검색 시간을 단축할 수 있다.

 

• 단점

    ◦  큐 내부의 프로세스 뿐만 아니라 큐와 큐 사이에서도 스케줄링 필요하다.

         -  고정 우선순위의 선점형 방식으로 스케줄링 될 수 있다.

         -  각 큐마다 CPU 선점 가능 시간을 정해두는 방식으로 스케줄링 될 수 있다. (기아현상 예방)


MFQ (Multilevel Feedback Queue)

• 다단계 피드백 큐 스케줄링 (Multilevel Feedback Queue Scheduling)

    ◦  프로세스가 다른 큐로 이동하는 것을 허용한다.

 

• 장점

    ◦  융통성있는 프로세스 관리가 가능하다.

         -  프로세스가 CPU 시간을 너무 많이 쓰면 낮은 우선순위 큐로 이동시킨다. (시간 할당량)

         -  낮은 우선순위 큐에서 너무 오래 대기하는 프로세스는 높은 우선순위 큐로 이동시킨다.

    ◦  Aging 기법을 통해 기아현상을 예방할 수 있다.

 

• 단점

    ◦  프로세스가 큐를 이동하는 과정에서 오버헤드가 발생할 수 있다.

    ◦  결정해야할 요소가 많아 복잡한 판단이 요구된다.

         -  큐의 개수

         -  각 큐에 적용할 스케줄링 알고리즘

         -  특정 프로세스를 높은 우선순위 큐로 올려줄 시기

         -  특정 프로세스를 낮은 우선순위 큐로 내려줄 시기

         -  새로운 프로세스가 들어갈 큐를 선택하는 방법


참고자료

 

운영체제 - YES24

운영체제

www.yes24.com

 

[운영체제 OS]스케줄링 알고리즘 SJF(Shortest Job First) 정리, 장점, 한계, non preemptive

[운영체제 목차, 포스팅 링크] 안녕하세요~~ 오랜만에 쓰는 운영체제 글이야요 무엇을 주제로 포스팅을 할까 고민하다가 운영체제 스케줄링 알고리즘 포스팅을 FCFS, RR, Multilevel Queue까지만 진행

jhnyang.tistory.com

 

[운영체제] RR(Round Robin) 스케줄링

RR 스케줄링 RR(Round Robin / 라운드 로빈) 스케줄링은 대화형 시스템에서 사용되는 선점 스케줄링 방식이다. 이 알고리즘은 프로세스가 도착한 순서대로 프로세스를 디스패치하지만 정해진 시간

yoons2owo.tistory.com

 

CPU 스케줄러

• 어떤 프로세스에 CPU 자원을 할당할지 결정하는 운영체제 커널의 모듈

• 프로세스를 선택할 때에는 응답시간/처리량/효율성 등을 증대시킬 수 있는 방법을 고려해야 한다.

    ◦  응답시간 : 첫 응답이 나올 때 까지 걸리는 시간

    ◦  처리량 : 단위 시간 내에 완료시켜준 프로세스가 몇 개인지

    ◦  효율성 : 문맥교환이 적절히 일어나는지

 

 

장기 스케줄링

• 어떤 프로세스를 Ready Queue 에 삽입할지 결정하는 작업

    ◦  작업 스케줄링이라 부르기도 한다.

    ◦  디스크에서 어떤 프로그램을 가져와 커널(Ready Queue)에 등록할지 결정하는 작업

       -  디스크에서 가져온 프로그램을 커널에 등록하면 프로세스가 된다.

    ◦  새로운 프로세스 생성 단계 (new)

 

• 메모리에 동시에 올라가 있는 프로세스의 수를 조절하는 작업도 포함

• 호출 빈도수가 적기 때문에 상대적으로 속도가 느린 것이 허용된다.

 

• 요즘 운영체제에서는 잘 사용하지 않는다.

    ◦  과거에는 메모리 크기가 작아 너무 많은 프로세스가 커널에 올라오면 프로세스당 할당해줄 수 있는 메모리가 적어졌기 때문에,

         이를 해결하기 위해 장기 스케줄링이 사용되었다.

    ◦  요즘은 하드웨어가 발달해 메모리를 신경 쓸 필요가 없어졌다. 프로세스가 시작되면 장기 스케줄링을 거치지 않고 바로 메모리를

         할당받은 다음 Ready Queue 에 들어간다.


단기 스케줄링

• Ready Queue 에 있는 프로세스 중 무엇을 다음 번에 실행 상태로 만들 것인지 결정하는 작업

    ◦  CPU 스케줄링이라 부르기도 하며, 일반적으로 스케줄러라 함은 단기 스케줄러를 의미한다.

    ◦  미리 정해둔 스케줄링 알고리즘에 따라 CPU를 할당할 프로세스를 선택한다.

    ◦  프로세스 준비 단계 (new → ready)

• ms 이하의 시간 단위로 매우 빈번하게 호출되기 때문에 수행 속도가 충분히 빨라야 한다.


중기 스케줄링

• 메모리에 적재된 프로세스의 수를 관리하는 작업

    ◦  장기 스케줄러와 역할이 비슷하다.

    ◦  필요한 이유 : 메모리에 너무 많은 수의 프로세스가 적재되면 프로세스 당 보유하고 있는 메모리량이 극도로 적어지면서

                             디스크 I/O 가 수시로 발생하게 되는데, 이는 심각한 시스템 성능 저하를 초래한다.

 

• 스왑 아웃(swap out)

    ◦  메모리에 올라와 있는 일부 프로세스에서 메모리를 통째로 빼앗아 디스크의 스왑 영역에 저장하는 행위

    ◦  봉쇄 상태의 프로세스가 제일 먼저 스왑 아웃 대상이 된다.

       -  봉쇄 상태의 프로세스는 당장 CPU를 획득할 가능성이 없기 때문

    ◦  그 다음으로 타이머 인터럽트가 발생해 Ready Queue 로 이동하는 프로세스가 스왑 아웃 대상이 된다.

 

• 중기 스케줄러의 등장으로 프로세스의 상태에 Suspended 상태가 추가 되었다.

    ◦  메모리를 통째로 빼앗기고 디스크로 스왑 아웃된 상태를 의미

       -  Suspended Blocked : 봉쇄 상태에 있던 프로세스가 디스크로 스왑 아웃

       -  Suspended Ready : 준비 상태에 있던 프로세스가 디스크로 스왑 아웃

       -  Suspended Blocked 상태가 특정 조건을 만족하면 Suspended Ready 상태가 된다.


디스패처

• CPU 코어의 제어를 CPU 스케줄러가 선택한 프로세스에 주는 모듈

• 디스패치

    ◦  준비 리스트에 있던 프로세스 중 하나를 선택(스케쥴링)해 실행하는 것

    ◦  이 때 Context Switching이 일어난다.

       -  자발적 문맥 교환 : 사용 불가능한 자원(blocked 등)을 요청했으므로 프로세스가 CPU 사용을 포기

       -  비자발적 문맥 교환 : 시간 제한이 만료되었거나 우선순위가 더 높은 프로세스에 의해 CPU를 뺏김

• 프로세스 Context Switching 이 일어날 때 마다 디스패처가 호출되므로, 가능한 빠르게 수행되어야 한다.

• 디스패처가 하나의 프로세스를 정지하고 다른 프로세스의 수행을 시작하는데 까지 소요되는 시간을 디스패치 지연(Dispatch Latency)

    이라고 부른다.


참고자료

 

운영체제 - YES24

운영체제

www.yes24.com

 

[운영체제] 장기 스케줄링, 중기 스케줄링, 단기 스케줄링

처리기 스케줄링의 유형 1. 처리기 스케줄링의 목적 : 응답시간, 처리량, 효율성을 증대시키기 위해 처리기...

blog.naver.com

 

[운영체제] 프로세스 스케줄러(단기,중기,장기)

이번 시간에는 스케줄러에 대해 공부해 보겠습니다. 스케줄러란 어떤 프로세스에게 자원을 할당할지를 결정하는 운영체제 커널의 모듈을 지칭합니다. 스케줄러에는 장기, 단기, 중기 스케줄러

kosaf04pyh.tistory.com

 

'CS Knowledge > 운영체제' 카테고리의 다른 글

[OS] 인터럽트 개념과 이중모드  (0) 2022.09.16
[OS] CPU 스케줄링 알고리즘  (0) 2022.09.16
[OS] 스레드와 멀티스레드  (0) 2022.09.08
[OS] 프로세스와 Context Switching  (0) 2022.09.08
[OS] 운영체제 구조  (0) 2022.09.07

 스레드 개념

• 프로세스 안에서 실행되는 여러 흐름 단위

    ◦  프로세스가 생성될 때, 기본적으로 하나의 스레드가 함께 생성된다.

    ◦  즉 프로세스마다 최소 한 개 이상의 스레드가 존재할 수 있다.


 멀티스레드

 하나의 프로세스에 두 개 이상의 스레드가 존재하는 구조로, 여러 작업을 동시에 처리할 수 있다.

 각 스레드마다 별도의 스택 영역이 독립적으로 주어지지만, 텍스트데이터 영역은 소속된 프로세스의 것을 공유하여 사용한다.

    ◦  프로세스는 자신만의 고유 공간과 자원을 할당받아 사용하는데 반해 스레드는 프로세스 내부의 다른 스레드와

         공간, 자원을 공유하면서 사용한다는 점에서 차이가 있다.

 

 사용자 스레드(User threads)

    ◦  사용자 수준(user level)에서 실행되며 thread library에 의해 관리된다.

    ◦  동일한 메모리 영역에서 스레드가 생성/관리 되므로 속도가 빠르다.

 

 커널 스레드(Kernel thread)

    ◦  커널 수준(kernel level)에서 실행되며 운영체제에 의해 직접 관리된다.


 다중 스레드 모델

 Many-to-One Model

    ◦  여러 사용자 스레드를 하나의 커널 스레드에 mapping 한 모델

    ◦  concurrency 는 얻을 수 있지만 parallelism 을 얻을 수 없다.

    ◦  여러 개의 사용자 스레드 중 하나가 시스템 호출 등으로 중단되면 나머지 모든 스레드 역시 중단된다.

    ◦  멀티코어 or 멀티프로세스의 이점을 충분히 활용할 수 없다.

 

 One-to-One Model

    ◦  하나의 사용자 스레드를 하나의 커널 스레드에 mapping 한 모델

    ◦  blocking 문제가 발생하지 않는다.

    ◦  멀티 코어나 멀티 프로세스의 이점을 활용할 수 있다.

    ◦  사용자 스레드를 만드는 것은 곧 커널 스레드를 만드는 것을 의미한다. 커널 스레드가 많아지면 성능상의 문제가 발생할 수 있다.

    ◦  가장 일반적으로 사용 되는 모델이다.

          -  대부분의 시스템에서 처리 CPU 수가 증가함에 따라 커널 스레드의 개수를 제한하는 것의 중요성이 줄어들었기 때문에
              Many-to-Many 모델보다 더 많이 사용된다.

 

 Many-to-Many Model

    ◦  많은 사용자 스레드를 같거나 더 적은 수의 커널 스레드에 mapping 한 모델

    ◦  blocking 문제가 발생하지 않는다.

    ◦  멀티 코어나 멀티 프로세스의 이점을 활용할 수 있다.

    ◦  가장 flexible 하지만 구현하기 어렵다.

 

 Two-Level Model

    ◦  Many-to-Many 방식과 One-to-One 방식이 함께 존재하는 모델

    ◦  두 모델의 장점을 모두 누리기 위해 고안된 모델이다.


 멀티스레드의 장단점

 장점

    ◦  응답성

          -  동시에 여러 작업을 수행할 수 있기 때문에 사용자에 대한 응답성을 증가시킨다.

    ◦  자원 공유

          -  프로세스는 공유 메모리와 메시지 전달을 통해서만 자원을 공유할 수 있지만 스레드는 동일한 프로세스 내부의 스레드들과

             자원을 공유하기 때문에 자원 손실이 적다.

          -  스레드 생성은 프로세스 생성보다 일반적으로 시간과 메모리를 적게 소비한다

          -  자원을 공유하기 때문에 Context switching 속도는 프로세스 보다 스레드 사이에서 더 빠르다.

• 단점

    ◦  안전성

          -  스레드 끼리 메모리 공간을 공유하기 때문에, 하나의 스레드가 메모리를 훼손하면 다른 스레드의 작업에도 문제가 생길 수 있다.

          -  Critical Section 과 동기화 기법

              -  하나의 스레드/프로세스가 수정 가능한 공유 자원을 액세스하고 있을 때,

                  그 스레드/프로세스에 의해 참조되는 영역을 Critical Section 이라고 한다.

              -  특정 데이터에 여러 스레드/프로세스가 동시 접근하는 경우 문제가 발생할 수 있기 때문에,
                  동기화 기법을 이용해 특정 데이터에는 한번에 하나의 스레드/프로세스만 접근하도록 제한해야 한다.


 멀티 프로세스

 멀티 프로세스

    ◦  여러개의 프로세스가 동시에 병렬적으로 처리되는 상황을 의미한다.

    ◦  보통 하나의 컴퓨터에 여러개의 CPU를 장착해야 가능하다. 1코어 CPU의 경우 한번에 하나의 프로세스만 처리할 수 있기 때문이다.

 

    ◦  장점 : 안전성

              -  메모리 침범 문제를 OS 차원에서 해결해준다

 

    ◦  단점 : 성능 저하

              -  프로세스는 독립된 메모리 영역을 가지기 때문에 작업량이 많을수록 메모리 효율이 떨어진다.

                  또한 Context Switching 으로 인한 오버헤드가 발생하기 쉽다.


참고자료

 

운영체제 - YES24

운영체제

www.yes24.com

 

'CS Knowledge > 운영체제' 카테고리의 다른 글

[OS] CPU 스케줄링 알고리즘  (0) 2022.09.16
[OS] CPU 스케줄링 개념  (0) 2022.09.16
[OS] 프로세스와 Context Switching  (0) 2022.09.08
[OS] 운영체제 구조  (0) 2022.09.07
[OS] 운영체제 개요  (0) 2022.09.07

프로세스 개념

컴퓨터 프로그램이 메모리 상에서 실행중인 작업

    ◦  디스크에서 하나의 프로그램을 가져와 커널에 등록하면 프로세스가 된다.

• 각 프로세스는 아래와 같은 메모리 영역을 할당받는다

    ◦  텍스트(코드) 영역 : 컴파일된 실행 코드가 저장되는 영역

    ◦  데이터 영역 : 전역 변수 및 초기화된 데이터가 저장되는 영역

    ◦   영역 : 프로그램 실행 중에 동적으로 할당되는 데이터가 저장되는 영역

    ◦  스택 영역 : 임시 데이터(매개변수, 복귀 주소, 지역 변수 등)가 저장되는 영역


프로세스 상태

 New : 프로세스가 생성되는 중이다.

 Running : CPU에서 프로세스가 수행되고 있다.

 Waiting : 프로세스가 이벤트가 일어나기를 기다리고 있다.

    ◦  Ready 와 달리 입출력 완료 또는 신호의 수신을 기다리는 것

 Ready : 프로세스가 CPU에 할당되기를 기다리고 있다.

    ◦  다른 프로세스가 수행되고 있기 때문에, 실행 준비가 다 된 상태에서 본인 차례가 오기를 기다리는 상태

 Terminated : 프로세스의 실행이 종료되었다.

 Suspended : 메모리를 강제로 뺏긴 상태. 특정한 이유로 프로세스의 수행이 정지된 상태를 의미한다.
                          외부에서 다시 재개시키지 않는 이상 다시 활성화 될 수 없다.

    ◦  중기 스케줄러에 의해 디스크로 스왑 아웃된 프로세스가 대표적인 suspendended 상태

          -  suspended ready : 준비 상태에 있던 프로세스가 디스크로 스왑아웃

          -  suspended blocked : 봉쇄 상태에 있던 프로세스가 디스크로 스왑아웃

    ◦  blocked 와 suspended의 차이 

          -  blocked : 잠시 중지되어 있다가(blocked) 끝나면 다시 ready 상태로 돌아옴

          -  suspended : 잠시 중지되어 있다가(suspended) 누군가가 재개시켜줘야 다시 ready 상태로 돌아옴


프로세스 제어 블록(PCB)

 프로세스 관리에 필요한 정보를 포함하는 운영체제 커널의 자료구조

    ◦  프로세스가 생성될 때마다 고유의 PCB가 생성되고, 프로세스가 완료되면 PCB는 제거된다.

 프로세스 제어 블록이 포함하는 정보

    ◦  프로세스 상태

    ◦  프로세스 계정 정보

          -  CPU 사용 시간, 시간 제한, 프로세스 ID 등을 포함

    ◦  프로그램 카운터

          -  프로세스가 실행할 명령어의 주소

    ◦  CPU 레지스터 및 일반 레지스터

    ◦  CPU 스케줄링 정보

          -  프로세스 우선 순위, 스케줄 큐 포인터, 스케줄 매개변수 등

    ◦  메모리 관리 정보

          -  운영 체제에서 사용하는 메모리 관리 시스템에 대한 정보

          -  페이지 테이블, 세그먼트 테이블, 해당 프로세스의 주소 공간 등

    ◦  입출력 상태 정보

          -  프로세스에 할당된 입출력 장치 및 열린 파일 목록

    ◦  포인터

          -  부모 프로세스에 대한 포인터, 자식 프로세스에 대한 포인터, 프로세스가 위치한 메모리 주소에 대한 포인터,

             할당된 자원에 대한 포인터 정보 등


Context Switching

 현 프로세스의 상태를 PCB에 저장하고(state save) 새 프로세스의 PCB를 불러오는(state restore) 과정을 Context Switching

    이라 부른다.

    ◦  프로세스는 CPU 를 점유해 작업을 처리하다 상태가 전이되면 CPU 를 반환해야 하는데, 이때 진행하던 작업들을 저장해두지 않으면

         다음에 자신의 차례가 왔을 때 어떠한 작업을 수행해야하는지 알 수 없다. 따라서 프로세스는 CPU 가 처리하던 작업 내용을 자신의

         PCB 에 저장하고, 다음에 자신의 차례가 왔을 때 PCB 로 부터 해당 정보들을 CPU 에 전달해 작업을 재개할 수 있다.

    ◦  Context Switching이 이루어지는 동안 CPU는 다른 작업을 할 수 없다.

          -  즉 Context Switching에 소요되는 시간은 순수한 Overhead 이다.


참고자료

 

운영체제 - YES24

운영체제

www.yes24.com

 

'CS Knowledge > 운영체제' 카테고리의 다른 글

[OS] CPU 스케줄링 개념  (0) 2022.09.16
[OS] 스레드와 멀티스레드  (0) 2022.09.08
[OS] 운영체제 구조  (0) 2022.09.07
[OS] 운영체제 개요  (0) 2022.09.07
[OS] 운영체제와 프로세스 & 스레드  (0) 2022.06.26

 

 

인터페이스

• 응용 프로그램과 커널의 첫번째 인터페이스

• 커널에 사용자의 명령을 전달하고 실행 결과를 다시 사용자에게 알려주는 역할

• 운영체제는 커널과 인터페이스를 분리하며, 같은 커널이여도 다른 인터페이스 형태로 제작 가능하다.

    ◦  같은 커널이라도 다른 인터페이스가 장착되면 사용자에게 다른 운영체제로 보일 수 있다.

          -  예) 유닉스의 인터페이스는 쉘(shell)이라 하며, bash 쉘, C 쉘, T 쉘 등 여러 종류가 있다.


시스템 호출

• 응용 프로그램과 커널의 두번째 인터페이스

• 커널은 사용자나 응용 프로그램으로부터 컴퓨터 자원을 보호하기 위해 외부에서 자원에 직접 접근하는 것을 차단한다.
   따라서 자원을 이용하기 위해서는 시스템 호출 이라는 인터페이스를 사용해 접근해야 한다.


커널

• 운영체제 중 항상 필요한 부분만을 전원이 켜짐과 동시에 메모리에 올려놓고, 그렇지 않은 부분은 필요할 때 메모리에 올려서 사용하는데
    이 때 메모리에 상주하는 부분을 커널 이라 부른다.

• 주로 하는 일은 메모리 관리, 프로세스 관리, 파일 시스템 관리, 입출력 관리, 프로세스 간 통신 관리 등이 있다.

 

단일형 구조 커널

    ◦  초창기 커널 구조. 커널의 핵심 기능을 구현하는 모듈이 구분 없이 하나로 구성되어 있다.

    ◦  장점

          -  모듈 간의 통신 비용이 적어 효율적이다.

    ◦  단점

          -  모든 모듈이 하나로 묶여 있기 때문에 버그나 오류를 처리하기 어렵다.

          -  기능 간 상호 의존성이 높기 때문에 한 기능의 결함이 시스템 전체 결함으로 이어질 수 있다.

          -  다양한 환경 시스템에 적용하기 어렵다. (수정이 불가능하므로)

 

계층형 구조 커널

    ◦  단일형 구조 커널이 발전된 형태. 비슷한 기능을 가진 모듈을 묶어서 하나의 계층으로 만들고,

        계층 간의 통신을 통해 운영체제를 구현하는 방식

    ◦  비슷한 기능 끼리 모듈화 되어 있기 때문에 오류가 발생하면 문제가 있는 계층만 고치면 되는 등 단일형 구조보다 버그나 오류를

         쉽게 고칠 수 있다.


드라이버

• 응용 프로그램과 커널의 인터페이스가 시스템 호출이라면 커널과 하드웨어의 인터페이스드라이버이다.

• 다양한 하드웨어에 맞는 인터페이스를 직접 개발하는 것은 어렵기 때문에, 하드웨어의 특성을 반영한 소프트웨어인 디바이스 드라이버

    하드웨어 제작자에게 받아 커널이 실행될 때 함께 실행되도록 한다.


참고자료

 

운영체제 - YES24

운영체제

www.yes24.com

 

'CS Knowledge > 운영체제' 카테고리의 다른 글

[OS] CPU 스케줄링 개념  (0) 2022.09.16
[OS] 스레드와 멀티스레드  (0) 2022.09.08
[OS] 프로세스와 Context Switching  (0) 2022.09.08
[OS] 운영체제 개요  (0) 2022.09.07
[OS] 운영체제와 프로세스 & 스레드  (0) 2022.06.26