ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [COSINE] Week1: Introduction
    @UoP.lecture note 2017. 10. 4. 09:10

    1. What is an Operating System?


    > 강의 계획 Plan of Lecture

    Teaching Block 1에서는 컴퓨터의 운영체제와 마이크로프로세서 구조에 중점을 두고 수업을 진행할 예정.

    마이크로프로세서 중요 명령어들과 인터럽트 핸들러의 역할 등 운영체제 중요 토픽들에 관련한 배경 지식들을 쌓는것을 목표로 함.


    우리는 Microsoft의 윈도우나 Apple의 MacOS에 익숙하지만 정확하게 운영체제 Operation System(이하 OS)이란 무엇일까?


    운영체제 ≠ 바탕화면

    : 바탕화면은 운영체제가 아니라 어플리케이션-레벨 프로그램들의 묶음에 의해 보여지는 GUI(Graphic User Interface)일 뿐임.

    운영체제는 어플리케이션들보다 더 낮은 수준인 커널 모드에 존재하며 프로그래머에 의해서만 접근 가능함.



    넓은 개념의 기계로서의 OS

    : OS는 더 정확하고 안전하고 높은 수준의 조작이 가능하도록 함


    자원 관리자로서의 OS

    :  현대의 대부분 OS들에서 여러 프로세스의 동시 실행을 허용하는 추세인데, 이 프로세스들은 하드웨어의 자원을 공유할 수밖에 없음. 이때 OS가 여러 프로세스의 자원 요구를 관라하고 조정하는 역할을 함.


    OS의 역할을 더 자세히 살펴보기 위해 컴퓨터의 CPU(Central Processing Unit)에 대해 알아보자. 

    CPU는 컴퓨터의 심장으로, 메모리로부터 데이터를 읽고 프로그램을 실행시킬 수 있다. 현대의 CPU는 논리, 산술 제어 단위와 메모리 캐싱, 메모리 관리 단위 등으로 구성된다.


    기능적으로, 프로세스는 기계명령어(machine instruction)의 시퀀스에 의해 동작함.


    레지스터(Registers) : CPU 안에 있는 속도가 가장 빠른 저장소. 32/64비트로 나뉨. 예를들어 펜티엄 CPU라면 EAX, EBX, ECX, EDX 와 EBP, ESI, EDI, ESP 라는 이름의 8개 레지스터를 가짐.


    어셈블리 언어(Assembly Language) : 기계코드의 상징적인 형태로 시스템 프로그래머에 의해 사용됨.

    예) Intel의 두가지 명령어 사용

    MOV EBX, EAX -> 레지스터 EAX의 데이터를 레지스터 EBX로 복사하라

    ADD EBX , 4 -> 레지스터 EBX의 데이터에 4를 더하라

    펜티엄 ADD 명령어를 통해 메인메모리와 레지스터의 값 간의 이동도 가능함.

    예)  MOV ESI, 105672 -> 105672라는 상수를 ESI로 복사하라

    MOV EAX, [ESI] -> ESI가 가리키는 번지에 해당하는 메인메모리 값을 레지스터 EAX에 복사하라


    하드디스크와 같은 I/O 장치들은 포트를 가지고 이 포트의 묶음에 의해 조작 및 데이터 교환이 이루어짐. 어셈블리 명령어 중 INOUT은 이러한 I/O 장치로부터 데이터를 받아오거나 내보낼 때 사용됨.

    예)  IN EAX, 368 -> 368번 포트에 연결된 장치의 데이터를 레지스터 EAX에 복사하라


    유저모드와 커널모드 (★중요★)


    CPU들은 Program Status Word라고하는 레지스터 값에 의해 조절가능한 작동 모드를 지원함. 하나가 유저(User)모드, 하나가 커널(Kernel)모드.

    만약 프로그램(기계 코드)이 유저모드에서 실행되고 있다면 IN, OUT과 같은 몇몇 낮은 수준의 명령어는 사용에 제약이 걸림. 이런 낮은 수준의 명령어를 특권 명령어(Privileged instructions)라고 하며 커널모드에서만 수행될 수 있음.


    커널 모드로서의 OS

    : OS의 특징이라고 말할 수 있는 것 중 하나가 "커널모드에서 수행될 수 있는 코드"이므로, 유저모드에서 수행될 수 없는 I/O 기계 코드는 어플리케이션 프로그램을 대신해 오직 OS에 의해서만 수행될 수 있음.



    Interrupts


    I/O 컨트롤러가 이용가능한 데이터에 접근하고자 한다면 무조건 CPU의 주의를 받아야하는데, 이 때 전기적 신호인 Interrupt가 발생함. 그리고 인터럽트가 발생한 경우, CPU는 현재 수행중이던 프로세스를 내버려두고 인터럽트 핸들러(Interrupt handler)라고 불리는 특수 코드를 통해 인터럽트를 발생시킨 새 이벤트를 처리해야만 함.


    * 인터럽트 핸들러는 부트타임에 설치됨

    ** 인터럽트 핸들러의 원래 역할은 I/O 컨트롤러로부터 데이터를 받아오는 것이었지만 실제로는 이를 넘어서 더 넓은 범위의 역할을 함. ex. 프로세스 스케줄링, 시스템 호출 

    심지어 OS가 여러 부분의 인터럽트 핸들러에 의해 동작한다고 해도 과언이 아님




    Summary.>.


    1. OS란....

    - 커널모드에서 수행될 수 있는 소프트웨어의 부분 집합.

    - 각종 인터럽트 핸들러와 그 코드들에 의해 정의될 수 있는 시스템.


    2. 컴퓨터 하드웨어의 다양한 구성요소와 OS에 대한 내용을 배움.


    댓글

Designed by Tistory.