ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [운영체제]1.introduction 운영체제 소개
    Computer Science/OS 2022. 9. 8. 02:24
    728x90

    운영체제란?

    사용자와 컴퓨터 하드웨어 간의 중간 매개체의 역할을 하는 프로그램

    운영체제의 목적

    1. 사용자 프로그램을 실행시키고 사용자의 문제점을 손쉽게 해결할 수 있는 것
    2. 컴퓨터 시스템을 편리하게 사용하게 만드는 것
    3. 컴퓨터 하드웨어를 효율적으로 사용하도록 하는 것

    컴퓨터 시스템의 구조 (4가지 구성요소)

    1. 하드웨어 : 기본적인 컴퓨팅 자원 (CPU, memory, I/O devices 등)
    2. OS(Operating system) : 사용자와 응용 프로그램들로부터 하드웨어를 제어 및 정밀 조정한다.
    3. 응용프로그램 (Application programs)
    4. 사용자(Users)

    운영체제의 정의

    1. 운영체제는 자원 할당 자이다.
    -> 자원을 공평하고 효율적으로 사용하도록 할당해준다.
    2. 운영체제는 제어 프로그램이다.
    -> 에러와 잘못된 사용을 막아준다.
    *자원 : 프로그램 동작에 도움이 되는 모든 하드웨어 요소들 전부를 말함.
    3. Kernel로도 정의
    -> 컴퓨터 시스템에서 항상 실행되는 프로그램

    컴퓨터 부팅(시작) 과정

    1. PC starts up
    - 맨 처음 컴퓨터 전원이 켜질 때 bootstrap program이 적재(실행)된다.
    2. BIOS -> POST
    - 처음 하드웨어가 제대로 동작하는지 체크하고 초기화한다.
    3. Identify boot device
    - 부팅 장치를 탐색한다.
    4. Load operating system
    - 최종적으로 이상 없으면 커널 OS를 적재하여 시작한다.

    * BIOS(basic input/output system)는 펌웨어로서 사전에 설치되어 있으며, 하드웨어를 검사하고 초기화한다.
    * POST(power-on self-test)는 하드웨어 구성정보, 하드웨어 오류 여부 테스트, RAM 테스트 등 자기 자신의 하드웨어를 테스트한다.
    *펌웨어는 하드웨어와 소프트웨어의 중간단계

    컴퓨터 시스템의 구조

    * CPU와 IO장치 간 어떻게 구동되는지 중요!

    1개 이상의 CPU, 버스(Bus)를 통해서 연결된 입출력 기기 제어기(Device Controller)로 구성 연결돼있다.
    * DMA(Direct Memory Access) : I/O 장치의 메인 메모리 직접 접근

    • 입출력 장치와 CPU는 병행 처리되는 것이 일반적이다.
    • 입출력 장치 관리자(device controller)는 데이터를 임시 저장하는 로컬 버퍼를 가짐.
    • CPU는 로컬 버퍼와 메모리 간에 데이터 이동을 관리한다.
    • 장치 관리자는 입출력 장치와 로컬 버퍼 간의 데이터 이동을 관리한다.
    • 장치 관리자가 데이터 이동을 완료하였음을 CPU에게 알린다. -> 인터럽트

     

    인터럽트 (Common Functions of Interrupts)

    • 인터럽트 발생 시 운영체제가 제어권을 갖게 된다.
    • 운영체제는 Interrupt vector에 저장되어 있는 ISR(Interrupt Service Routine) 시작 주소로 점프한다.
    • Interrupt architecture는 점프하기 전에 현재 CPU가 실행 중이었던 프로그램의 상태를 저장하고 ISR처리 후 되돌아올 시작 주소를 저장한다.
    • 운영체제는 인터럽트로 구동되는 것이라고 볼 수 있다.

    * trap : 소프트웨어에 의해 발생되는 인터럽트 ex) ctrl+alt-del
    * 만약 IO 입출력, 키보드 입력이 끝났을 때, 입력이 완료되었다는 인터럽트가 발생한다.
    -> 운영체제 제어권 얻음 -> 인터럽트 처리
    * 사용자 프로그램이 실행되다가 시스템 호출(일종의 SW 인터럽트) 또는 인터럽트가 발생하여야 OS가 제어권을 가진다.
    -> 인터럽트가 발생하지 않으면, OS가 제어권을 가질 수 없다.

    인터럽트 처리 (Interrupt Handling)

    • 운영체제는 현재 프로그램을 실행 중인 CPU의 상태를 저장해야 한다.
      • 레지스터 및 프로그램 카운터 값 저장
    • 어떠한 장치가 인터럽트를 걸었는지 조사해야 한다.
      1.  Polling (일일이 조사)
      2.  Vectored interrupt system (인터럽트 유형에 따라 적절한 코드 실행): 어느 장치가 인터럽트를 걸었는지 쉽게 알 수 있다.
    • 인터럽트 유형에 따라 적절한 처리를 하는 코드를 실행 (ISR)
    • 인터럽트 처리 후, 원래 프로세스 실행 재개

     

    인터럽트 타임라인 (Interrupt Timeline)

    CPU는 사용자 프로그램 실행 상태와 I/O device 인터럽트를 처리하는 상태의 2가지 상태를 가진다.

    1. IO장치 전송이 끝나면 인터럽트 발생
    2. CPU는 상태를 저장하고 인터럽트 해당 장치를 확인
    3. 인터럽트 처리 후 원래 프로세서로 복귀한다.

     

    입출력 장치 구조 (I/O Structure)

    1. 동기식 IO : IO장치가 종료할 때까지 프로세스가 대기
      • 오직 하나만의 IO 요청만이 존재하여 처리
    1. 비동기식 IO : IO가 종료를 기다리지 않고, 계속 실행되는 것.
      • 동시에 여러 개의 독립적인 IO 요청이 실행될 수 있다.
      •  여러 IO 요청의 처리를 위한 Device-status table이 필요하다. (큐로 IO 프로세스 처리 대기)
      • 인터럽트로서 처리가 끝났음을 알린다.

     

    DMA (Direct Memory Access) 구조

    DMA는 인터럽트 IO에 의한 CPU 부담을 덜기 위해 개발됨.

    Interrupt IO와 DMA 처리 절차

    기존 인터럽트 IO 절차

    • 1byte를 IO장치로부터 읽어 버퍼에 저장.
    • CPU에 인터럽트 발생
    • CPU가 메인 메모리로 데이터 이동
    • 실행을 계속하고 IO는 계속 일할 수 있다.

    => CPU가 byte단위의 데이터 IO를 일일이 처리하기에 부담스럽다.
    따라서 DMA이용.

    • DMA는 전송하는 데이터 양을 블록단위로 높여 IO장치의 데이터 전송속도를 높임
    • DMA는 블록단위의 데이터를 버퍼로부터 읽어와 CPU 간섭 없이 메인 메모리에 직접 저장

    => CPU와 DMA는 같은 BUS를 이용하므로 충돌이 발생할 수 있다.

    *cycle stealing: CPU와 DMA가 동시에 bus 접근 시 CPU가 양보

    왜 CPU가 양보해야 하는가?
    => CPU는 매우 빠른 장치이므로 CPU가 메인 메모리 접근 우선순위가 높다면, DMA는 무한정 기다리게 된다.
    따라서, DMA가 메인메모리 접근 우선순위가 높다.

     

    저장장치 구조 (Storage Structure)

    메인 메모리 : CPU가 직접 접근하는 저장장치, 휘발성
    보조 기억장치 : 비휘발성 안정적인 저장장치

    저장장치 계층구조 (Storage Hierarchy)

    • 속도
    • 가격
    • 휘발성

    caching
    Device Driver

     

    Caching

    캐시 메모리를 칭하는 것만 아니라, 느린 저장장치의 정보 일부를 보다 빠른 메모리에 데이터 일부를 복사해서 사용하는 것

    항상 캐시에 데이터를 옮겨놓고 사용.

    • 캐시에 데이터가 있다면 빠르게 액세스 해서 사용
    • 없다면 느린 장치에서 캐시로 복사 후 사용

    캐시는 크기가 작기 때문에 교체 정책이 필요

    컴퓨터 시스템 구조 (Computer-System Architecture)

    • 일반적으로 범용 프로세서 CPU 1개 사용
    • 특정 목적 프로세서도 존재
    • 멀티 프로세서 : CPU가 여러 개 존재 => parallel systems

    장점

    • 단위 시간당 처리량이 높아진다
    • 규모의 경제, 주변장치 공유 가능. 경제적이다.
    • 신뢰성 향상

    타입
    비대칭형 멀티프로세싱(Asymmetric Multiprocessing) : CPU 능력, 업무가 각기 다르다.
    대칭형 멀티프로세싱 (Symmetric Multiprocessing) : 모든 CPU가 동일 능력, 업무

    Symmetric Multiprocessing

    3개의 CPU가 동일한 능력, 업무를 수행. 강 결합 시스템 - CPU가 메모리, 버스를 공유

    Dual-Core in a CPU

     

    Clustered Systems

    • 여러 시스템이 뭉쳐 하나의 시스템처럼 동작.
    • 여러 CPU가 모여서 한 CPU로 속해 동작.
    • 공유하는 저장장치 storage-area network (SAN) : 가용성이 높은 서비스를 제공 가능
    • 시스템의 잉여 장치를 두어 시스템 오류를 막음. 계속적으로 서비스 제공


    종류
    Asymmetric clustering: 하나의 컴퓨터가 hot-stanby 모드에 있다. 대기하고 있음.
    Symmeric clustering:
    일부 cluster는 고성능의 계산능력(high-performance computing(HPC))을 제공하고,
    서로 상충하는 연산을 막기 위한 distributed lock manager (DLM) 제공한다.
    공유 변수 동시 접근 시 오류 발생 -> 공유 변수에 동시 접근 막기 위한 lock을 사용한다. (6장 참고)

     

    OS의 발전

    • No OS(Single User) -> 일괄 처리 시스템 (1950년대)
      • 초기 형태. 여러 작업 단일 작업으로 묶어서 처리.

    cf) 발전된 batch 처리 시스템 (spooling) : 빠른 입출력 장치를 이용하여 CPU의 IO 대기 시간을 줄임

    • 다중 프로그래밍 시스템(Multi-programming:1960년대)
      • 여러 프로그램을 적재하여 IO 발생 시 CPU는 대기 없이 다른 작업 실행
      • 여러 프로세스를 수용해야 하므로 메모리 관리가 복잡해진다.
      • * Job Scheduling : 한 작업 완료 후 운영체제가 프로세스 중 하나를 우선순위 정해서 실행.

    단점) 한 프로세스가 IO하지 않고 오랫동안 계속 계산만 할 경우 오류로 무한루프
    (한 프로세스가 CPU를 독점하는 경우 발생) -> 시분할 시스템으로 개선

    • 시분할 처리 시스템 (time sharing system: 1960년대) / 대화식 시스템(interactive cumputing)
      • CPU 시간을 여러 프로세스가 time slot으로 나누어 실행시키는 시스템
      • 반응시간 < 1초
      • 기본적으로 여러 프로그램이 동시에 메인 메모리에 적재된 멀티프로그래밍 시스템
      • timer 하드웨어를 사용하여 주기적으로 timing 인터럽트를 발생시킴.
      • OS제어권 획득
      • OS가 다음 프로세스를 선택 후 실행시킴
      • IO 없이 CPU 계산만 하던 프로세스가 CPU 독점 불가. -> 시스템 반응시간이 향상

    cf) 싱글 유저 시스템 / 멀티 유저 시스템 (시분할 시스템)
    *CPU scheduling: CPU 작업 중에 하나를 선택하여 CPU에 할당하는 과정

    * Swap out : 메인 메모리 부족하여 기존 프로세스를 보조기억장치로 이동
    * Swap in : 보조기억장치의 프로세스를 다시 메인 메모리로 이동

    • 실시간 처리 시스템(real time system: 1960년대)
      • 데이터가 발생한 시점에서 필요한 계산 처리를 즉석에서 처리하는 시스템
      • 특정 마감 시간 안에 계산 결과를 수행해야 한다.
        1. hard real time system: 계산 결과 마감시간이 정확해야 하는 경우
        2. soft real time system
    • 분산 처리 시스템 (Distributed system: 1980년대)
      • 분산된 데이터 저장소, 네트워크 연결하여 서로 통신하여 일을 분담 처리
    • 다중 처리 시스템 (Multiprocessing system: 1990년대)
      • 하나의 컴퓨터에 여러 개의 CPU 장착하여 동시에 병행적으로 처리.
      • 단위 시간당 처리량(throughput)을 향상 시킴
        1. 비대칭형 멀티프로세싱(Asymmetric Multiprocessing) : CPU 능력, 업무가 각기 다르다.
        2. 대칭형 멀티프로세싱 (Symmetric Multiprocessing) : 모든 CPU가 동일 능력, 업무

     

    운영체제의 동작 (Operating-System Operations)

    • OS는 HW 또는 SW로부터 발생된 인터럽트에 의해 구동됨 (interrupt driven)
    • SW에 의해 발생된 인터럽트 : exception or trap
    • 인터럽트는 하나의 프로세스가 무한루프, 다른 프로세스를 변경, 운영체제 영역을 접근 등을 막아주는 역할을 한다.
    • 운영체제는 Dual-mode를 제공. 운영체제 자체와 시스템 요소를 보호할 수 있다.
      • 사용자 모드, Kernel 모드
      • Mode bit : 현재 사용자 모드인지 커널 모드인지 알려줌

     

    Timer Interrupt의 역할

    • IO 또는 실행 종료 시에만 CPU 양도할 경우 -> 무한 루프 시 CPU 독점 가능성 발생
    • 타이머 인터럽트는 무한루프를 막아주고 프로세스가 자원을 독점하는 것을 예방한다.
      • 타이머 인터럽트를 주기적으로 발생
      • 타이머 카운터 값이 주기적으로 감소
      • 카운터 값이 0이 되면 인터럽트 발생
      • 인터럽트 발생 시 OS가 제어권 획득. 특정 프로세스가 CPU를 독점하는 것을 막는다.

    타이머 인터럽트 발생시 유저 모드에서 커널 모드로 변경 후 다시 유저 모드로 돌아옴.

    프로세스 관리 (Process Management)

    • 프로세스는 실행 중인 프로그램을 뜻하고 시스템에 있어서 작업의 단위이다.
    • 프로그램이 수동적인 것이라면 프로세스는 능동적인 것.
    • 프로세스는 task를 실행하기 위해 자원이 필요함
    • 프로세스 종료 후 재사용한 자원은 회수된다.
    • Single-threaded process는 하나의 프로그램 카운터를 가진다. -> 다음번 실행할 명령어의 주소를 나타낸다.
      • 프로세스는 한 번에 하나의 명령어를 순차적으로 실행한다.
    • Multi-threaded process는 각 스레드마다 프로그램 카운터를 가진다.

    Process Management Activities

    운영체제는 프로세스 관리에 대한 책임을 가진다. (자세한 내용은 3장 참고)

    • OS의 역할
      • 프로세스를 생성하고 삭제
      • 프로세스의 일시정지, 실행 재개
      • 프로세스의 동기화 메커니즘 제공
      • 프로세스의 통신 메커니즘 제공
      • 프로세스의 교착상태의 처리

     

    메모리 관리 (Memory Management)

    • 모든 데이터는 처리 전과 후에 메인 메모리에 있어야 한다.
    • 모든 명령어는 실행하기 위해서도 메인 메모리에 있어야 한다.
    • 메모리 관리는 무엇이 메인 메모리에 적재되어야 하는지를 결정한다.
      • CPU의 이용도, 반응시간 최적화하는 중요한 역할
    • Memory management activities (운영체제의 역할)
      • 메모리를 어떤 사용자가 사용하고 있는지 기록
      • 프로세스와 데이터를 언제 메모리에 적재하는지 여부 결정
      • 필요에 따른 메모리 공간 할당 및 회수

     

    보조기억장치 관리 (Storage Management)

    • 운영체제는 일반적이고 논리적인 정보의 스토리지 뷰를 제공한다.
      • 물리적 특성을 간략화하여 하나의 논리적인 스토리지 유닛으로 보이게 함 : File
      • 논리적인 파일 단위로 저장장치를 접근할 수 있다.
    • 파일 시스템 관리
      • 여러 파일은 디렉토리로 구성
      • 접근 제어(Access control)는 어떠한 접근의 허용 여부를 결정
      • 운영체제의 역할
        • 파일과 디렉토리의 생성 및 삭제
        • 파일 디렉토리 조작 명령어
        • 파일을 디스크에 매핑
        • 파일 백업 기능

    대규모 저장장치 관리 (Mass-Storage Management)

    • 일반적으로 디스크는 대규묘 데이터 저장 시 사용. 오랜 기간 보관
    • 전반적인 컴퓨터의 속도는 디스크 시스템과 관리 알고리즘에 달려있다.
    • 운영체제의 활동
      • 여유 공간 관리
      • 저장 장치 할당
      • 디스크 스케줄링: 다양한 데이터 접근 요구의 우선순위 결정

     

    Migration of data "A" from DIsk to Resister

    • 프로세스가 데이터 A 업데이트할 경우 불일치 발생 가능
    • cache coherency (캐시 일관성) : 캐시에 저장된 데이터와 원본 데이터 간의 불일치 발생을 예방한다.
    • 하나의 데이터가 여러 곳에 복제되어 존재할 가능성이 있음 -> 하나가 갱신되면 일관성 문제 발생 가능함.

     

    운영체제가 제공하는 IO Sybsystem

    • 사용자에게 하드웨어 장치의 특이성을 감춘다.
    • 운영체제의 책임
      • 범용 인터페이스를 제공
      • 특정 하드웨어 장치를 제어하는 드라이버 SW 제공
      • IO관리에 관한 메모리 관리
        1. buffering : 임시 데이터 저장
        2. caching : 보다 빠른 저장장치에 옮겨 사용
        3. spooling : 보다 빠른 저장장치에 임시 저장하여 입출력

    * spooling : 프린터가 종료될 때까지 장시간 CPU가 대기하는 것을 막기 위한 기법.
    예) 출력될 데이터를 보다 빠른 하드 디스크에 저장하고 CPU는 다른 일을 처리. 이후 디스크에 저장된 데이터를 프린트

    보호 및 보안 (Protection and Security)

    • Protection : 자원 접근 제어
    • Security : 내, 외부 공격에 대한 방어. 특히 컴퓨터 바이러스에 대한 대비

     

    UNIX의 access control


    컴퓨팅 환경 (Computing Environments)
    전통적 컴퓨팅 환경


    <주요 용어 정리>

    1. An ____ is a program that manages the computer and acts as an intermediary between the computer user and the computer hardware.

        ___는 컴퓨터를 관리하고 컴퓨터 사용자와 컴퓨터 하드웨어 사이의 중개 역할을 하는 프로그램입니다.

    => 운영체제(Operating System)

     

    2. A computer system can be divided roughly into four components : ___, ___, ___ and users.

       컴퓨터 시스템은 크게 네 가지 요소로 나눌 수 있다: ___,___,___와 사용자.

    => 하드웨어(Hardware), 운영체제(Operating System), 응용프로그램(Application program)

     

    3. For a computer to start running, it needs to have an initial program to run. It is called ___.

        컴퓨터가 실행을 시작하려면 초기 프로그램이 있어야 합니다. 그것은 ___라고 불린다.

    => bootstrap program

     

    4. The occurrence of an event is usually signaled by an ___ from either the hardware or the software.

        사건의 발생은 일반적으로 하드웨어나 소프트웨어의 ___에 의해 신호된다.

    => 인터럽트(Interrupt)

     

    5. When the CPU is interrupted, ~ (CPU 인터럽트 되었을 때, 처리 절차는?)

    => user mode에서 kenel mode로 전환(OS 구동). CPU가 실행 중이던 프로세스 상태, 다음번 실행할 프로그램의 주소를 Program Counter(PC)에 저장 후 Interrupt vector에 저장된 ISR 시작 주소로 점프하여 ISR 실행. 인터럽트 처리 후 원래 프로세스 실행 재개

     

    6. A single program cannot, in general, keep either the CPU and the IO device busy. ___ increases CPU utilization by keeping multiple jobs in memory simultaneously.

       일반적으로 단일 프로그램은 CPU와 IO 장치 중 하나를 계속 사용할 수 없습니다. __는 여러 작업을 동시에 메모리에 저장하여 CPU 활용률을 높입니다.

    => 다중 프로그래밍(Multiprogramming)

     

    7. In ___ systems, the CPU executes multiple jobs by switching among them, but the switches occur so frequently that the users can interact with each program while it is running.

        __ 시스템에서 CPU는 여러 작업을 서로 전환하여 실행하지만, 전환은 매우 빈번하게 발생하므로 사용자가 실행 중인 각 프로그램과 상호 작용할 수 있다.

    => 시분할(time sharing)

     

    8. A bit, called the ___, is added to the hardware to distinguish between a task that is executed for OS and one that is executed for the user.

       OS를 위해 실행되는 작업과 사용자를 위해 실행되는 작업을 구분하기 위해 ___라는 비트가 하드웨어에 추가됩니다.

    =>모드 비트(Mode bit)

     

    9. The OS should maintain control over the CPU. An user program should not get stuck in an infinite loop and never return control to the OS. For this purpose, we can use a ___. A ___ can be set to interrupt the computer after a specified period. Whenever an interrupt occurs, the OS gets the control to handle the interrupt.

       OS는 CPU에 대한 제어를 유지해야 한다. 사용자 프로그램은 무한 루프에 갇혀서는 안 되며 OS에 대한 제어권을 반환해서는 안 된다. 이를 위해 __를 사용할 수 있습니다. __는 지정된 기간 후에 컴퓨터를 중단하도록 설정할 수 있습니다. 인터럽트가 발생할 때마다 OS는 인터럽트를 처리할 수 있는 제어권을 얻는다.

    => 타이머(timer)

     

    10. process management에 관련된 운영체제 임무 나열

    => 프로세스 생성/삭제, 프로세스 일시정지, 실행 재개, 동기화 메커니즘 제공, 통신 메커니즘, 교착상태 처리 메커니즘

     

    11. memory management에 관련된 운영체제 임무 나열

    => 메모리 어느 부분 누가 사용하고 있는지 기록, 프로세스 및 데이터를 메모리에 적재 여부를 결정, 필요에 따른 메모리 공간 할당 및 회수

     


    <연습문제>

    1.1 What are the three main purposes of an operating system?

         운영 체제의 세 가지 주요 목적은 무엇입니까?

    - 사용자가 컴퓨터 시스템을 편리하게 사용하게 만드는 것

     

    - 주어진 문제를 해결하는 데 필요한 컴퓨터의 별도의 리소스를 할당하는 것입니다. 할당 과정은 가능한 한 공정하고 효율적이어야 한다.
     
    - 제어 프로그램은 크게 두 가지 기능을 한다: 1. 오류와 컴퓨터의 부적절한 사용을 방지하기 위한 사용자 프로그램의 실행 감독, 2. IO 장치의 작동 및 제어 관리.
     

    2.2 커널 모드에서만 실행되는 것은?

    답 : a, c, e, f, g 

    - b : 단순 시간 확인, c : trap - 사용자 프로그램이 발생 가능 ex) 0으로 나누는 예외

     

    2.10 : What is  the purpose of interrupts What are the differences between a trap and an interrupt? Can traps be generated intentionally by a user program?

    인터럽트의 목적은 무엇인가 트랩과 인터럽트의 차이점은 무엇인가? 트랩은 사용자 프로그램에 의해 의도적으로 생성될 수 있는가?

      An interrupt is a hardware-generated change-of-flow within the system. An interrupt handler is summoned to deal with the cause of the interrupt; control is then returned to the interrupt context and instruction. Atrap is a software-generated interrupt. An interrupt can be used to signal the completion of an I/O to obviate the need for device polling. A trap can be used to call operating system routines or to catch arithmetic errors.
     인터럽트는 시스템 내에서 하드웨어에서 생성된 흐름의 변화입니다. 인터럽트 핸들러는 인터럽트의 원인을 처리하기 위해 호출되며, 제어는 인터럽트 컨텍스트와 명령으로 반환된다. 트랩은 소프트웨어에서 생성된 인터럽트입니다. 인터럽트는 장치 폴링의 필요성을 없애기 위해 I/O의 완료를 알리는 데 사용될 수 있다. 트랩은 운영 체제 루틴을 호출하거나 산술 오류를 포착하는 데 사용될 수 있다.

     

    728x90
    반응형

    댓글

Keydi's Tistory