Super Kawaii Cute Cat Kaoani
본문 바로가기
💾 lecture/운영체제

[OS]chapter 1: Introduction

by wonee1 2023. 10. 8.
728x90

 

<운영체제 이론 정리>  1장 

 

1. Computer System Structure

 
컴퓨터는 4개의 종류로 나눠진다
 

  • 하드웨어   

 CPU, 메모리, i/o 장치 

  • 운영시스템
  • 시스템 및 응용프로그램
  • 사용자

소프트웨어는 운영체제를 통하지 않고는 하드웨어를 제어할 수 없다
 

소프트웨어들이 메모리에 로드가 된다(메모리 위에 올라와있다)
프로그램 안에는 기계어 명령어들과 명령어가 실행되는데 필요한 데이터가 있다 (메모리에 올라가있는 프로그램)
->  CPU로 하나씩 명령어들을 가져와서 실행한다
 
CPU 내부
 

  • 레지스터: 사이즈가 작은 메모리 속도가 빠름

                       메모리에서 가져온 명령어나 데이터를 저장한다(실행된 결과도 저장한다) 
 

  • pc(프로그램 카운터): 주소가 저장되어 있다 (다음에 가지고 올 명령어의 주소) 

 

  • 명령어: load, store, jmp, cmp

            load: 메모리에 있는 데이터를 CPU로 가져가는 것
            store: 계산결과를 다시 메모리로 전달 후 저장
            jmp: pc의 주소를 변경해줌
            cmp: 비교 ( ex: 비교결과가 크면 종료 )
 
           

             ex) 
           a=10  메모리에 공간을 잡고 거기에 저장 (store)
           a=a+10 a라는 메모리의 값을 더하기 위해 CPU로 갖고와야함 (load)
           while()   (jmp)
           if(a>10) (cmp)
 
 

 

1.1 What is an Operating System?

 
운영체제란?
사용자와 하드웨어 사이의 중개자 역할을 하는 프로그램

 운영 체제 목표:
▪ 사용자가 컴퓨터 시스템을 편리하게 사용할 수 있도록 만든다
▪ 컴퓨터 하드웨어를 효율적으로 사용한다
      자원 관리 및 할당
      프로그램 실행 제어
 
OS는 자원을 할당하고 관리한다.

▪ 모든 자원을 관리한다
▪ 효율성을 높이기 위해 상충되는 요청 사이에서 결정한다

OS는 제어 프로그램이다.
 
▪ 오류 방지를 위해 프로그램 실행을 제어한다
▪ I/O 장치를 제어한다
 

 

1.2 Operating System Definition

 
운영체제 의미 
 

  • 넓은 의미: 보편적으로 받아들여지는 정의는 없지만 보통 운영체제 주문 시 공급업체가 제공하는 모든 것을 의미 하며, 매우 다양하다
  • 좁은 의미: 컴퓨터에서 항상 돌아가는 유일한 프로그램 (커널) 

 
 

1.2.1 Coumputer-System Operation 

 

컴퓨터 시스템 동작 

 

초기 프로그램(부트 스트랩) 

-> 펌웨어에 저장되어 있다 (EEPROM 읽기 전용 메모리)

 

1) 부트스트랩 프로그램은 운영체제의 커널을 찾아 메모리에 적재

2) 운영체제는 init과 같은 첫 번째 프로세스를 실행하고 어떤 사건 (event)가 발생하기를 기다린다  

 

사건 발생 -> 인터럽트로 인해 신호가 보내진다 

 

하드웨어:  시스템 버스를 통해 CPU에 신호를 보내 인터럽트를 발생시킬 수 있다 

소프트웨어 : 시스템 호출또는 모니터 호출을 실행하여 인터럽트를 발생시킬 수 있다 

 

3) CPU가 인터럽트 되면 하던 일을 중단하고 고정된 위치로 실행을 옮긴다 

 

고정된 위치 -> 인터럽트를 위한 서비스 루틴이 위치한 시작주소 

 

 

4) 인터럽트 서비스 루틴 실행

 

5)  루틴이 완료되면 CPU는 인터럽트 되었던 연산을 재개 

 

 

 

 

2.1 Bootstrap Program

 
부트 스트랩
 

  •   전원을 켰을때 부팅할 때 자동으로 실행되는 프로그램
  •   주로 ROM이나 Firmware에 저장되어 있음. 전원과 상관없이 저장된 내용이 살아있음.(비휘발성, RAM과 반대)
  •    운영체제를 로드하고 실행한다
  •    컴퓨터 시스템을 초기화한다 (CPU,메모리,디바이스 컨트롤러)

  
      전원 킴-> 리셋->0->메모리의 0번지 ROM 실행->부트스트랩 실행 
 
한글,윈도우 등의 운영체제를 디스크에서 메모리로 가지고 감 ->부트스트랩이 가져온다
그 다음 PC의 주소를 운영체제의 시작 주소인 1000으로 바꿔줌 ->부트스트랩이 시작주소를 넣어준다 
 
* 부트스트랩은 컴퓨터가 초기화되고 운영체제를 로드하는 데 필요한 핵심 기능을 담당
 

2.2 Use of Interrupt 

 

 

운영체제는 인터럽트 기반이다.

  • 중단된 명령어의 주소를 저장한다
  • 다른 인터럽트가 처리되는 동안 들어오는 인터럽트를 비활성화 한다
  • 인터럽트 서비스 루틴 (ISR) 및 인터럽트 핸들러 전송 제어 

 
인터럽트(Interupt)

  • 상황이 발생했다는 것을 알려주는 전기적 신호
  •  컴퓨터 시스템 내부 또는 외부에서 발생하는 이벤트 또는 신호
  •  이벤트 발생 시 컴퓨터의 정상적인 실행흐름을 중단하고 해당 이벤트를 처리하는 코드로 제어를 전달 

ex) 하드웨어 디바이스에서 데이터가 도착했을 때 CPU에게 인터럽트를 발생

 

 
인터럽트 벡터(Interupt Vector)

  • 그 시스템에서 활용되는 여러가지 종류의 인터럽트 들이 쭉 나열된다 
  • 그때 어떤 함수 또는 ISR이 호출될지 정의하는 역할을 한다 
  • 인터럽트는 모든 서비스 루틴의 주소를 포함하는 인터럽트 백터를 통해 인터럽트 서비스 루틴(ISR)에 대한 제어를 전송한다

 
인터럽트 서비스 루틴(ISR)

  •  컴퓨터 시스템에서 발생한 인터럽트에 대한 처리를 담당하는 코드블록 또는 함수 (=인터럽트 핸들러 )

 
 
인터럽트를 받은 CPU는 하던 일 멈추고 인터럽트 처리한다
인터럽트 처리가 끝나면 다시 돌아가서 하던 일 할 때 멈췄던 것부터 다시 실행한다. ( 저장된 주소가 PC에 로드되어 시작된다. 중단된 명령을 다시 실행한다) 
 
이벤트 혹은 인터럽트 종류별로 어떤 함수가 호출될 지 미리 정해둔다(인터럽트 이벤트로 함수 자동 호출) 

 
트랩, 예외 (trap, exception)

 

 

  • 소프트웨어적으로 발생하는 이벤트들을 말한다
  • 오류나 사용자 프로그램의 운영체제 서비스 실행 요청에 의해 유발되는 소프트웨어에 의해 생성된 인터럽트 

            ex) 0으로 나누기, 운영체제 서비스 요청 (시스템콜) 
 

 


📌 시스템 콜(system call)  :  운영체제에서 제공하는 서비스 또는 기능에 접근하기 위해서 응용프로그램이나 사용자 프로그램이 운영체제 커널에 요청하는 인터페이스 

 

 

 

2.3 I/O Structure

 

 
 
디바이스 컨트롤러(Device Controller) 

  •  하드웨어 디바이스를 관리하고 제어하는 부분, 특정 하드웨어 디바이스(프린터,마우스)와 상호작용하여 데이터 전송,명령 수행, 상태 모니터링 등 담당
  • 하드웨어와 소프트웨어 간의 인터페이스 역할 
  • 특정 장치 유형을 담당한다
  • 로컬 버퍼와 레지스터가 있다
  • 장치와 로컬 버퍼 간 데이터 이동을 담당한다 

 
 
 

 

디바이스 드라이버 (Device Driver) 

  • 운영체제와 하드웨어 디바이스 간에 통신을 원할하게 하기 위한 소프트웨어(명령어들의 모임)
  • 특정 하드웨어 디바이스(프린터,마우스)를 컴퓨터 운영체제에서 인식하고 관리할 수 있게 한다
  • 하드웨어와 운영체제 사이의 인터페이스 역할

 

 


💡 디바이스 드라이버는 디바이스 컨트롤러 내의 레지스터를 로드한다 
      디바이스 컨트롤러는 장치와 로컬 버퍼 간에 데이터를 이동시킨다

 

  •  완료되면 디바이스 컨트롤러는 CPU 에게 작업을 완료했음을 알린다.(인터럽트를 발생시켜서)
  • CPU는 데이터를 로컬 버퍼에서 메인 메모리로 이동시킨다. (입력용 장치인 경우)

 
로컬 버퍼에 저장된 내용을 바로 메모리로 로드하는 것이 아닌 CPU를 경유하여서 메모리에 저장시킨다.

 

단점 

속도 저하 효율 저하 (Load,store 명렁어 실행 반복) 
 
* CPU가 운영체제를 돌리는 시간을 줄일 수록 좋다 

 

 

정리 
1. 입출력 연산을 시작하기 위해 디바이스 드라이버는 디바이스 컨트롤러의 적절한 레지스터에 필요한 값을 적재한다

2. 디바이스 컨트롤러는 이어 취할 동작을 결정하기 위해 이들 레지스터의 내용을 조사한다

3. 디바이스 컨트롤러는 장치로부터 자신의 로컬 버퍼로 데이터 데이터 전송을 시작한다 

4. 데이터 전송이 완료되면 디바이스 컨트롤러는 자신이 연산을 완료했음을 인터럽트를 이용하여 디바이스 드라이버에 통보한다 

5. 디바이스 드라이버는 제어를 운영체제에게 반환한다 

 

📌이러한 구동방식은 대량의 데이터 를 전송하는 데에 높은 오버헤드(overhead)를 발생시킨다 
 

 

 
다이렉트 메모리 엑세스 (DMA)
 

  • 디바이스 컨트롤러가 데이터를 로컬 버퍼에서 메인 메모리로 바로 데이터를 전송하게 한다.(CPU를 경유하지 않고)
  • 데이터를 전송하는 고속 I/O 장치에서 사용된다 (메모리 속도에 가깝다)
  • I/O장치와 CPU가 동시에 실행될 수 있다.  

       ->  문제점: 메모리 접근을 위한 경쟁이 일어날 수 있다. 
                          CPU도 메모리에 접근하고 디바이스 컨트롤러도 메모리에 접근하기 때문에 충돌이 발생할 수 있음
 
이를 해결하기 위해서 Cycle stealing 기법을 사용한다
-> CPU가 메모리에 접근하지 않을 때 디바이스 컨트롤러가 접근하게 한다.

현대 컴퓨터 시스템의 동작

 

2.4 Storage Structure

 
메인 메모리 

  • CPU가 직접 접근할 수 있는  유일한 대용량 저장 장치
  • 랜덤으로 접근한다
  • 일반적으로 휘발성 메모리다

보조기억장치 

  •  메인 메모리의 확장, 비휘발성 저장 용량
  •  SSD나 하드디스크 등이 있음 

 
컴퓨터 저장장치는 계층구조를 이룬다
 

  • 속도
  • 비용
  • 휘발성

 
캐싱

  • 느린 저장소에 있는 내용을 더 빠른 저장소로 임시 복사하는 기법 
  • 캐시를 먼저 확인 한뒤 있으면 캐시에 접근하고 없으면 원본이 있는 메모리에 접근한다

 
하드 디스크 -> 메모리로 바로 접근하는 것이 아닌 SSD 같은 보조 기억장치에 복사한 다음 메모리에 접근  
 

2.4.1 Storage-Device Hierarchy

2.4.2 Caching

 

  • 일시적으로 느린 저장소에서 빠른 저장소로 데이터를 복사한다
  • 더 빠른 저장소를 먼저 확인하여 다음 사항을 결정한다 
  1. 데이터가 거기에 있음 -> 그렇다면 캐시의 데이터를 직접 사용한다
  2. 데이터가 거기에 없음 -> 그렇다면 원본이 있는 메모리에 접근하고 데이터는 캐시에 복사된다.     

 

      

3. Computer System Architecture

 
단일 프로세서 시스템 (Single-Processor System) 

  • 범용 CPU가 1개만 있다
  • 장치별 프로세서가 있을 수 있다 (CPU 아님)

멀티 프로세서 시스템 (Multiprocessor System) 

  • 병렬 시스템으로 알려져 있다(셀룰러 시스템이라고도 부름)
  • 버스, 메모리, I/O장치 공유 

한 CPU가 메모리에 접근해서 메모리를 사용하면 다른 CPU는 기다려야한다

->  CPU가 3개가 된다고 하더라도 처리량이 3배가 되는 건 아니다(메모리 하나를 가지고 경쟁하기 때문에)


 
멀티 프로세서 시스템은 두 가지 형태를 가진다 

  • 대칭형 멀티 프로세서 시스템(symmetric multiproceesing) 

       오직 한 프로세서가 시스템 데이터에 대한 접근과 공유를 책임지고 나머지 프로세서는 해당 CPU를 따르는 방식 

       모든 프로세서가 대등하다 따라서 프로세스간의 주종관계가 없다 

       모든 프로세서는 물리메모리를 공유한다 

 

 

SMP 구조

 

 

  • 비대칭형 멀티 프로세서 시스템(asymmetric multiprocessing) 

      프로세스에 특정 태스크가 할당되는 방법

       하나의 주 프로세스가 시스템을 제어한다 다른 프로세스들은 주 프로세스의 명령을실행하거나 미리 정의된 태스트를        실행한다 

       CPU마다 용도를 정하여 사용한다 

 

 

멀티 프로세서의 장점 

  1. 증가된 처리량
  2. 규모의 경제
  3. 증가된 신뢰성 

 
📌 n개의 CPU를 사용한 속도향상 비율? -> 메모리 경쟁 때문에 속도 비율이 향상되지는 않는다 
 

 
 클러스터 시스템 

  • 네트워크를 통해 함께 결합된 (느슨하게) 두 개이상의 개별 시스템으로 구성된다  
  • 고가용성 제공
  • SAN(Storage-Area Network)을 통해 저장소 공유 
  • 여러 개의 독립된 컴퓨터들을 네트워크로 연결하여 하나의 컴퓨터처럼 사용

 

 

4. Operating System Structure

운영체제 시스템 구조

 

운영체제의 가장 중요한 측면은 다중 프로그래밍을 할 수 있는 능력 

-> CPU가 하나 이상의 작업을 실행할 수 있게 구성함으로써 CPU 이용률 증가 

 

운영체제는 한 번에 여러 작업을 메모리에 적재 (load) 

주 메모리 (main memory) 는 모든 작업을 저장할 수 없기 때문에 작업들은 처음에 작업 풀 (pool) 내에 유지된다

 

 

Batch system 

  • 한 프로그램이 끝나고 다른 프로그램 실행 (비 다중 프로그래밍) 

Multiprogramming system (다중 프로그래밍) 

  • 여러 프로그램이 동시에 시작(병렬적), 여러개의 프로그램이 진행 되지만 현재 실행되는 건 항상 하나 
  • 단일 사용자는 CPU및 I/O 장치를 항상 사용 중인 상태로 유지할 수 없다 
  •  작업을 구성하여 항상 실행할 작업을 갖도록 한다
  • 모든 작업의 부분집합이 메모리에 있다 
  • job scheduling을 통하여 하나의 작업을 선택하고 실행한다  (여러 개 대기 중인 프로그램에서 선택) 
  • 대기가 필요한 경우 OS는 다른 작업으로 전환한다 
  • 효율성을 위해 필요한 다중 프로그래밍이다 

Timesharing system(multitasking) 

  • 시간 공유 멀티 태스킹 (시분할 시스템) 
  • 멀티 프로그래밍의 논리적 확장 
  • 대화형 컴퓨팅 환경 제공 
  • 한 프로그램에 정해진 실행시간 할애 
  • 한 프로세스에 정해진 시간만큼 CPU를 할당
  • 응답시간(Response time)은 1초 미만이어야 한다.

    여러 개의 작업이 같은 시간에 실행 준비가 된 경우→ CPU scheduling(한 프로세스가 끝나고 다음 프로세스의 시작은 CPU 스케쥴링이 결정함)

    각 사용자는 적어도 하나의 프로그램을 메모리에서 실행한다 →  프로세스

    프로세스가 메모리에 맞지 않으면 스왑핑(디스크와 메모리를 왔다갔다하는 것 swap-in, swap-out )으로 프로세스가 실행되고 실행된다

    가상메모리는 완전히 저장되지 않은 프로세스의 실행을 허용한다

 

 

5. Operating-System Operations

 

현대 운영체제는 인터럽트 구동식(Interupt driven)

하나의 인터럽트를 처리하기 위해 하나의 인터럽트 서비스 루틴이 제공된다 

 

 

듀얼 모드(Dual-Mode Operation)  작동으로 OS가 자체 및 시스템 구성 요소를 보호할 수 있다

  • 유저 모드 / 사용자 모드 
  • 커널 모드 ( 슈퍼바이저 모드, 시스템 모드 혹은 특권 모드) 
  • 하드웨어에서 제공하는 모드 비트(mode bit) 
    ▪ 시스템이 언제 작동하는지 구별하는 기능을 제공한다 
    사용자 코드 또는 커널 코드 실행 (커널모드 0, 사용자 모드 1 ) 
    ▪ 특권으로 지정된 일부 명령 예를 들면  커널 모드에서만 실행 가능

 

 

 

5.1 Timer

 
사용자 프로그램이 무한 루프에 빠지거나, 시스템 서비스를 호출하지 않아서 제어가 운영체제로 복귀하지 않는 경우가 생길 수 도 있다 

 

타이머는 OS가 CPU를 제어하는데 사용된다 (지정된 시간 후 컴퓨터를 인터럽트)

  •   사용자 모드로 복귀하기 전에 OS는 타이머를 설정한다
  •   타이머 인터럽트 발생 시 OS로 제어권 전환
  •  타이머 설정 명령은 특권 명령이다

프로그램을 실행시킬 대마다 타이머 설정-> CPU의 독점을 통제하기 위해서
 
타이머 인터럽트 -> 인터럽트 핸들러 부분 실행 ->컨트롤이 OS로 넘어감 
 
 

5.2 Transition from User to Kernel Mode

 

시스템 콜은 다음과 같은 경우에 커널로 모드를 변경한다.

 

그 다음 시스템 콜에서 돌아오면 이를 사용자에게 재설정 한다
 

사용자 모드에서 커널 모드로의 전환

 

시스템 콜을 하면 유저모드에서 트랩 모드 비트가 커널모드 0 으로갔다가 다시 유저모드인 1로 돌아간다
 

 

6. Computing Environments

 
클라이언트-서버 컴퓨팅 (Clinet-Server Comuputing)

  • 중앙 시스템에 연결된 덤 터미널을 스마트 pc로 대체했다 (덤터미널은 디스플레이 역할만 함)
  • 서버는 클라이언트가 생성한 요청에 응답한다
  • 컴퓨터 서버는 클라이언트가 서비스를 요청할 수 있는 인터페이스를 제공한다
  • 파일서버는 클라이언트가 파일 저장 및 파일 검색을 할 수 있도록 인터페이스를 제공한다

P2P 컴퓨팅(Peer-to-Peer Computing)
 

  • P2P는 클라이언트와 서버를 구분하지 않는다.
    대신 모든 노드가 peer로 간주된다
    각각 클라이언트, 서버 또는 둘 다의 역할을 할 수 있다.
       

가상화 

  • 가상으로 컴퓨터 하드웨어가 있는 것처럼 보여줌 
  • 소프트웨어적으로 하드웨어가 있는 것처럼 보여주는 기술 
  • vmware, jvm

 

클라우딩 컴퓨팅
 

 

실시간 시스템
 
사용자가 많아지면 컴퓨터가 느려짐 
CPU는 하나인데 실행되는 프로그램이 많을수록 할당되는 CPU가 주어지는 시간이 늘어난다 -> 사용자가 느끼기에 처리속도가 느리게 느껴짐 

  • 어떤 시간을 제한을 두고 그 시간안에 처리되게 한다
  •  미사일 방지 시스템, 전쟁 무기 시스템 

 
 
임베디드 시스템 
 

  • 다른 시스템이 내장되어있다 따라서 사용자가 그 컴퓨터 시스템을 쓸일이 없다
  • TV안에 컴퓨터가 내장되어 있지만 그 컴퓨터를 직접 사용하지  않는다

 


 

✍️요약

 운영체제는 하드웨어를 관리할 뿐 아니라 응용 프로그램이 실행되기 위한 환경을 제공하는 소프트웨어

컴퓨터가 프로그램을 실행하려면 프로그램이 메인 메모리에 있어야한다 

메인 메모리는 휘발성 장치

컴퓨터 시스템을 설계하는 데 다양한 전략 ( 단일처리기 시스템, 다중처리기 시스템 )

현대 운영체제들은 다중 프로그래밍 개념 도입 ( 한 번에 여러 작업들이 메모리에 유지) 

시분할 시스템은 다중 프로그래밍의 확장 

 

 

 

 

 

728x90