Chapter 1. 서론

1.1 운영체제가 할 일

운영체제는 하드웨어를 제어하고 다양한 사용자를 위해 다양한 응용 프로그램 간의 하드웨어 사용을 조정한다. (사용자 관점, 시스템 관점)

1.2 컴퓨터 시스템의 구성

#Computer System Operation

컴퓨터 시스템은 공유 메모리에 대한 접근을 제공하는 공통 버스를 통해 연결된 여러 개여 장치 제어기와 하나 이상의 CPU로 구성 되어 있다.

-초기프로그램(부트스트랩) in ROM > init실행 & Event 대기

-interupt : ISR, Handler , Table, (예외상황, 하드웨어,시스템콜)

-인터럽트 구조 : 명령의 주소저장, 최근 스택에 복귀주소 저장

#Storage Structure

           CPU는 오직 메모리로부터 명령을 적재, 실행하고자 하는 프로그램은 메모리에 저장필요

           모든형태의 메모리는 워드의 배열을 제공하며 각 워드는 고유의 주소를 가진다.

           -적재명령 : 주메모리로부터 CPU내부의 레지스터로 한 워드를 옮기는 것

           -저장명령 : 레지스터의 내용을 주 메모리로 옮긴다.

#I/O Structure

장치제어기 : 자신이 제어하는 주변장치와 자신의 로컬 버퍼 저장장치 사이의 데이터 전송을 담당. 데이터 전송 완료 후 인터럽트를 통해 디바이스 드라이버에게 통보.

위의 방식은 대량의 데이터 전송시 오버헤드 초래 >> 직접메모리 접근(DMA)장치 CPU의 개입 없이 메모리로부터 자신의 버퍼 장치로 또는 버퍼로부터 메모리로 데이터 블록 전체를 전송

1.3 Computer System Architecture

#단일 처리기 시스템

사용자 프로세스의 명령어를 포함하여 범용 명령어 집합을 실행할 수 있는 하나의 주 CPU를 가진다.

#다중 처리기 시스템

        -증가된 처리량, 규모의 경제, 증가된 신뢰성

        -비대칭적 다중처리 : 종속 관계의 처리기

        -대칭적 다중처리(SMP) : 모든 처리기가 대등

다중처리는 계산 능력을 증대시키기 위하여 CPU를 추가한다. 최근에는 하나의 칩에 여러개의 코어를 포함 시키는 것

           위의 경우에서 각 코어는 자신의 레지스터 집합과 지역 캐시를 가지고 있다.

#클러스터형 시스템

클러스터 시스템은 여러 개의 CPU들이 함께 계산 작업을 실행한다. 하지만 둘 이상의 독자적 시스템 또는 노드들을 결합하여 구성한다는 점에서 다중처리기 시스템과 차이.

-비대칭형 클러스터 : 다른 컴퓨터들이 프로그램 실행시키는 동안 한대는 긴급대기모드

-대칭형 클러스터 : 둘 이상의 호스트가 응용 프로그램을 실행시키고 서로 감시

-병렬화, 병렬 클러스터

1.4 Operating Sysyem Architecture

다중프로그래밍 CPU가 항상 하나의 작업을 실행 할 수 있게 구성함으로 CPU 이용률을 증가시킨다.

: 주 메모리에 모든 작업저장하기엔 작아 처음에는 디스크 상에 존재하는 작업 풀 내에 유지된다. 풀은 주메모리 할당을 기다리며 디스크에 존재하는 모든 프로세스로 구성

-비다중프로그래밍 시스템에선 CPU가 쉬어야함

-다중프로그래밍 시스템 : 운영체제가 단순히 다른작업으로 전환해 그 작업을 실행

-멀티태스킹 : CPU가 다수의 작업들을 서로 교대로 실행하지만 빈번한 교대로 인해 사용자들은 각자 자기의 프로그램과 상호작용가능

-작업 스케쥴링(보조 > ) , CPU 스케쥴링 ( > 실행)

1.5 Operating System Operations

-현대의 운영체제는 인터럽트 구동식이다. 하나의 인터럽트를 처리하기 위해 하나의 인터럽트 서비스 루틴이 제공된다.

-운영체제와 사용자는 자원을 공유하기떄문에 사용자 프로그램의 오류가 현재 실행중인 프로그램내에서만 영향이 있도록 제한해야 한다.

#이중동작 모드

-모드비트 : 사용자모드(1), 커널모드(0)

-시스템 부트시 하드웨어는 커널모드에서 시작 > 운영체제가 적재 > 사용자 모드에서 사용자 프로세스 시작

-트랩이나 인터럽트 발생할떄마다 하드웨어는 커널모드로 전환. 그러므로 운영체제가 컴퓨터의 제어를 얻을 떄마다 항상 커널 모드에 있게 된다.

-하드웨어는 특권 명령이 커널모드에서만 실행하도록 허용

-사용자 모드에서 실행시 불법명령으로 간주 후 트랩을 건다.

-컴퓨터 시스템의 명령 실행 주기

 : 초기(운영체제<커널모드>) => 사용자응용(사용자<유저모드>)

    결국 제어는 인터럽트, 트랩 또는 시스템 호출을 통하여 운영체제로 다시 넘어옴

-시스템 호출 : 운영체제에 의해 실행될 동작을 사용자 프로세스가 요청할수 있게 한다. 일반적으로 인터럽트 벡터의 특정위치로 트랩을 거는 형태, 시스템 호출이 실행될 떄, 시스템 호출은 하드웨어에 의해 하나의 소프트웨어 인터럽트로 취급된다. 제어가 인터럽트 벡터를 통해 운영체제내의 서비스 루틴으로 전돨되고 모드비트가 커널로 설정.

-커널은 인터럽트 발생시킨 명령을 검사하여 인자가 정확하고 합법적인지 검증하고 요청을 실행 후 복귀시킴

#타이머 관리

무한루프, 또는 시스템 서비스를 호출하지 않아서 제어가 운영체제로 복귀하지 않는 경우를 방지한다.

타이머는 지정된 시간 후 컴퓨터를 인터럽트 하도록 설정할수 있다.

사용자에게 제어를 양도하기 전에 운영체제는 타이머가 인터럽트 할수 있도록 설정되었는지를 확인한다. 타이머가 인터럽트를 발생시키면 제어는 자동적으로 운영체제로 넘어가며, 운영체제는 인터럽트를 치명적인 오류로 취급하거나 또는 프로그램에게 더 많은 시간을 줄수 있다. 이에 따라 타이머의 동작 변경 명령은 특권 명령이다.

1,6 프로세스 관리

           -프로그램은 그 명령이 CPU에 의해 실행되지 않으면 아무 일도 할수 없다.

-프로세스는 자신의 일을 하기위해 여러 자원을 필요로 하는데 이러한 자원은 프로세스가 생성될떄 제공될수있고, 실행되는 동안 할당 될수 있다. 프로그램 종료시 자원 회수

-프로그램은 디스크에 저장된 파일의 내용과 같이 수동적 개체

-프로세스는 다음 실행 명령을 지정하는 프로그램카운터를 가진 능동적 개체이다.

-운영체제 프로세스 시스템 코드를 실행하는 프로세스와 사용자 프로세스 사용자 코드를 실행하는 프로세스들로 프로세스가 구성된다. 이들 모든 프로세스는 하나의 CPU 상에서 멀티 플렉싱함으로써 잠재적으로 병행 실행 될수 있다.

-운영체제는 프로세스 관리와 연관해 다음을 책임진다.

           :CPU에게 프로세스와 스레드 스케쥴링

           -사용자 프로세스와 시스템 프로세스의 생성과 제거

           -프로세스의 일시 중지와 재실행

           -프로세스 동기화를 위한 기법 제공

           -프로세스 통신을 위한 기법 제공

1.7 메모리 관리

주 메모리는 컴퓨터 시스템의 작동에 중추적인 역할을 한다. 메모리는 다양한 범위를 가지는 워드나 바이트의 대용량 배열이다.. 각 워드나 바이트는 자신의 주소를 가진다.

           -RAM CPU와의 입출력 장치에 의하여 공유되는 빠른 접근이 가능한 데이터의 저장소.

           -프로그램이 실행되기 위해서는 반드시 절대주소로 맵핑되고 메모리에 존재해야한다.

           운영체제는 메모리 관리와 관련하여 다음을 담당

                      -메모리의 현재 어느부분이 사용되고, 누구에 의해 사용되고 있는 지를 추적

                      -어떤 프로세스들을 메모리에 적재하고 제거할 것인가를 결정해야함

                      -필요에 따라 메모리 공간을 할당하고 회수 해야 한다.

 

1.8 저장장치 관리

운영체제는 저장장치의 물리적 특성을 추상화하여 논리적인 저장단위인 파일을 정의한다.

           #파일 시스템 관리

파일은 파일 생성자에 의해 정의된 관련 정보의 집합체이다. 일반적으로 파일은 프로그램과 데이터를 나타낸다.

           운영체제는 대량 저장매체와 그것을 제어하는 장치를 관리통해 파일의 추상개념을 구현

           운영체제가 파일관리 위해 담당

                      -파일, 디렉터리의 생성 및 제거

                      -파일과 디렉터리를 조작하기 위한 프리미티브의 제공

                      -파일을 보조저장장치로 맵핑

                      -안정적인 저장매체에 파일을 백업

           #대용량 저장 장치 관리

           컴퓨터 시스템은 반드시 RAM의 내용을 저장하기 위해 보조 저장장치를 제공해야함

           운영체제는 다음과 같은 기능 담당

                      -자유 공간의 관리

                      -저장 장소 할당

                      -디스크 스케쥴링

3차 저장 장치는 시스템 성능에는 중요하지 않지만 운영체제에 의해 관리되어야만 한다. 운영체제가 제공해야할 기능에는 마운트와 언마운트 기능, 프로세스의 배타적 사용을 위한 장치의 할당과 반환, 보조 저장장치로부터 3차 저장장치로의 데이터 이주

#캐싱

정보는 통상 어느 저장장치에 보관된다. 정보가 사용됨에 따라 보다 빠른 장치인 캐시에 일시적으로 복사된다 그러므로 특정 정보가 필요한 경우 먼저 캐시에 그 정보가 있는지를 조사해야한다. 만약 캐시가 없을경우 주 메모리 시스템으로부터 정보를 가져와 사용해야함 이떄 이 정보가 다음에 다시 사용될 확률이 높다는 가정하에 캐시에 넣어진다.

인덱스 레지스터와 같은 CPU 내부의 프로그램 가능한 레지스터들은 주메모리를 위한 고속의 캐시라 볼수 있다.

대부분의 시스템은 다음에 실행될 것으로 예상되는 명령을 넣어두는 명령 캐시를 가지고 있다. 만약 캐시가 없다면, CPU는 주 메모리부터 다음 명령을 인출해 올 동안 몇 사이클을 기다려야한다.

캐시의 크기에 한계가 있기에 캐시 관리가 설계의 중요한 문제가 된다

주 메모리는 보조메모리를 위한 빠른 캐시로 볼수 있는데, 이는 보조 메모리의 데이터를 사용하기 위해서는 주메모리에 복사되어야하고, 안전하게 보관하기 위해 보조 메모리로 이동되기 전에 데이터는 반드시 주메모리에 있어야 하기 때문이다.

-저장장치의 계층구조에서 각 수준간의 정보이동은 하드웨어 셀계나 제어하는 운영체제에 따라 명시적 또는 묵시적으로 이루어진다.

-메모리 계층 구조에서 동일한 데이터가 동시에 서로 다른 수준의 저장장치 시스템에 나타나게 된다.

-다중처리기 환경에서는 한 캐시에 있는 A값이 갱신 될 경우 그 값은 A가 존재하는 모든 캐시에 즉각적으로 반영되어야 한다. 이를 캐시 일관성 문제라 한다.

           #입출력 시스템

           운영체제의 목적중의 하나는 사용자에게 특정 하드웨어 장치의 특성을 숨기는 것이다.

           입출력 시스템은 다음과 같이 구성

                      -버퍼링, 캐싱, 스풀링을 포함한 메모리 관리 구성요소

                      -일반적인 장치 드라이버 인터페이스

                      -특정 하드웨어 장치들을 위한 드라이버

          

1.9 보호와 보안 ( Protection & Security )

시스템이 다수의 사용자를 가지고 있으며, 여러 프로세스의 병렬 실행을 허용한다며, 데이터에 대한 접근은 반드시 규제 되어야 한다.

메모리 주소 지정 하드웨어는 프로세스가 자신의 주소영역에서만 실행 될수 있도록 보장

보호란, 컴퓨터 시스템이 정의한 자원에 대해 프로그램, 프로세스, 또는 사용자들의 접근을 제어하는 기법이다.

보호와 보안을 제공하기 이해서는 시스템의 모든 사용자들을 구분 할수 있어야한다.

UID, SID

 

1.10 분산 시스템 ( Distributed Systems )

           분산시스템은 물리적으로 떨어져 있는 이기종 컴퓨터들의 집합이다. 네트워크로 연결됨

네트워크 프로토콜은 네트워크 어댑터와 같은 인터페이스 장치와 그것을 관리하기 위한 장치 드라이버와 데어티를 처리하기 위한 소프트 웨어를 필요로 한다.

네트워크는 노드간의 거리에 의해 타입이 결정 된다 (LAN, WAN)

네트워크 운영체제는 네트워크를 통한 파일의 공유, 다른 컴퓨터 상에 존재하는 다른 프로세스들끼리의 메시지 교환을 제공하는 운영체제이다. 분산운영체제는 그에 비해 덜 독립적인 환경을 제공한다. 다른 운영 체제들끼리 하나의 운영체제가 네트워크를 제어하는 것처럼 보이기 위하여 서로 밀접하게 통신한다.

1.ETC

           오픈소스 ( 우분투 커널 소스 )

           wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.18.1.tar.bz2

           오픈소스 프로젝트

http://freshmeat.net/ & http://di-strowatch.com 과 같은 사이트는 이러한 프로젝트들에 대한 포털을 제공한다.

 



Chapter1. 요약


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

-프로그램을 실행하려면 프로그램이 주 메모리에 있어야 한다. 주메모리는 바이트나 워드의 배열로 각 워드는 자신의 주소를 가지고 있다.

-주 메모리의 확장으로 보조 저장장치를 제공하며, 다양한 저장장치들은 계층구조로 구성된다.

-단일 처리기 시스템은 하나의 처리기만을 가지며 다중 처리기 시스템은 물리메모리와 주변장치들을 공유하는 둘이상의 처리기를 갖는다.

-CPU를 최대한 활용하기 위해서 다중 프로그래밍 개념을 도입, 이것에선 한번에 여러 작업들이 메모리에 유지된다. 멀티태스킹은 다중 프로그래밍의 확장이며 CPU 스케줄링 알고리즘은 작업들을 빠르게 교환해가며 실행하므로 각 작업이 동시에 실행되는것처럼 느끼게 한다.

-이중동작모드( 커널모드와 사용자 모드)에서 특권 명령은 커널 모드에서만 실행 될수 있고 타이머는 무한 루프를 방지한다.

'Study > Book' 카테고리의 다른 글

Viruses Revealed _ David Harley  (0) 2015.03.04
Operating Sysyem Concepts //컴퓨터 시스템의 구성  (0) 2015.02.03
정보보안개론 0x08  (0) 2015.01.24
정보보안개론 0x07  (0) 2015.01.23
정보보안개론 0x06  (0) 2015.01.23