Notice
Recent Posts
Recent Comments
Today
Total
05-15 08:05
Archives
관리 메뉴

Jeongchul Kim

01 서론 본문

Linux

01 서론

김 정출 2015. 8. 18. 10:06

운영체제(OS Operating System)
컴퓨터 하드웨어를 관리하는 프로그램, 응용 프로그램을 위한 기반 제공

사용자와 하드웨어 사이에서 중재자 역할, 자원 할당자(Resource Allocator),

제어 프로그램(Control Program)

컴퓨터에서 항상 실행되는 프로그램으로 커널(Kernel) 이라 불린다.

현재 범용 컴퓨터 시스템은 공유 메모리에 대한 접근을 제공하는 공통 버스(Bus)를 통해

연결된 여러 개의 장치 제어기와 하나 이상의 CPU로 구성


컴퓨터 시스템 동작(Computer- System Operation)

부트스트랩 프로그램(bootstrap program) : 컴퓨터 구동을 위한 실행 초기 프로그램

부트스트랩 은 펌웨어(Firm-ware) 내 읽기 전용 메모리(ROM)이나 EEPROM에 저장

부트스트랩 은 CPU 레지스터(Register) 로 부터 장치 제어기, 메모리 내용을 포함한 시스템의 모든 면을 초기화한다. 운영체제를 적재하는 방법 및 실행을 시작하는 방법

적재 후에는 init (첫 번째 프로세스(process)) 실행, 사건(event) 발생을 기다린다.


사건 이 발생하면 인터럽트(Interrupt) 신호 발생. 소프트웨어는 시스템 호출(system call)   

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

인터럽트 매커니즘은 중요하며 서비스 루틴(ISR Interrput Service Routine) 제어를 전달. 이어 인터럽트 핸들러(Handler) 호출. 인터럽트 루틴 은 명시적으로 현재 상태 저장 후 복귀하면 복원.







저장 장치 구조(Storage Structure)

CPU는 오직 메모리부터 명령을 적재하며, 프로그램은 모두 메모리에 저장되어야 한다. 범용 컴퓨터는 주 메모리(Random-Access Memory)에서 실행시킴.

RAM은 휘발성 메모리로 DRAM 반도체 기술로 구현.

ROM(Read Only Memory)은 비 휘발성 메모리로 갱신 불가능으로 정적(Static) 프로그램 저장

EEPROM은 자주 수정될 수 없고 따라 대부분 정적 프로그램 저장 -> 스마트폰의 공장 설치 프로그램


모든 형태의 메모리는 워드(고유의 주소를 가짐) 의 배열 제공. 상호작용(Interaction)은 적재(load) 또는 저장(store) 명령을 통해 이루어짐.

폰 노이만 구조 시스템에서 명령-실행 사이클

 1. 메모리로 부터 명령어 인출

 2. 명령을 명령 레지스터(Instruction Register)에 저장

 3. 명령어 해독

 4. 명령은 메모리로부터 피 연산자를 인출하여 내부 레지스터에 저장 가능

 5. 피 연산자에 대해 명령을 실행 후 결과를 메모리에 다시 저장.


저장 장치 간의 전송률 또는 접근 시간의 차이가 클 경우 성능을 개선하기 위해 캐시(Cache) 설치


입출력 구조(I/O Structure)

장치 제어기는 특정 타입의 장치를 제어한다. SCSI(Small Computer System Interface) 제어기는 7개 이상의 장치를 붙일 수 있다.

장치 제어기는 약간의 로컬 버퍼 저장 장치와 특수 목적 용 레지스터 집합을 유지한다. 자신이 제어하는 주변 장치와 자신의 로컬 버퍼 저장장치 사이의 데이터 전송을 담당한다. 통상적으로 운영체제는 각 장치 제어기마다 디바이스 드라이버를 가지고 있다.


디바이스 드라이버(Device Driver)는 장치 제어기의 동작을 이해하고 운영체제의 다른 부분들에게 장치에 대한 일관된 인터페이스 제공.

입출력 연산을 시작하기 위해 디바이스 드라이버는 장치 제어기의 적절한 레지스터에 필요한 값을 적재.


인터럽트 구동 방식의 입출력은 적은 양의 데이터를 전송하는 데에는 문제가 없지만, 디스크 입출력과 같은 대량 데이터를 전송하는 데에는 높은 오버헤드(Overhead) 초래

-> 이 문제 해결을 위해 직접 메모리 접근(DMA Direct Memory Access) 장치 사용





DMA는 CPU의 개입 없이 메모리로부터 자신의 버퍼 장치로 또는 버퍼로부터 메모리로 데이터 블록 전체를 전송한다.


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

1. 단일 처리기 시스템(Single-Processor Systems)

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

또한 대부분의 시스템들이 전용 처리기를 가지고 있다. 전용 처리기는 디스크나 키보드 또는 그래픽 제어기와 같은 특정 장치 처리기의 형태로 제공되거나 메인프레임에서와 같이 시스템의 구성 요소들 간 데이터를 빠르게 전송할 수 있는 범용 처리기에 가까운 형태로 제공.

디스크 제어기 마이크로프로세서(Micro-Processor)는 주 CPU로부터 연속된 요청을 받아들여 자기 고유의 디스크 큐(Disk- Queue)와 스케줄링 알고리즘(Scheduling Algorithm)을 구현한다.


2. 다중 처리기 시스템(Multi-Processor Systems)

병렬 시스템이라고도 하며, 매우 밀접한 통신을 하는 하나 이상의 처리기들을 가지며, 컴퓨터 버스, 클록(Clock), 메모리와 주변 장치를 공유한다.
다중 처리는 계산 능력을 증대 시키기 위해 CPU를 추가한다. 이를 통해 접근 가능한 메모리 양도 증가

-장점

  1. 증가 된 처리량(Throughput)

  2. 규모의 경제

  3. 증가 된 신뢰성

-형태

  1. 비 대칭적 다중처리(Asymmetric Multiprocessing)
    각 처리기에 특정 태스크(Task)가 할당되며, 하나의 주 처리기가 시스템을 제어한다. 다른 처리기들은 주 처리기의 명령을 실행하거나 미리 정의된 태스크를 실행한다. 이러한 기법은 주종 관계를 정의한다.

  2. 대칭적 다중처리(Symmetric Multiprocessing) = SMP
    모든 처리기가 대등하다. SMP로 Windows, Solaris, Mac OS X, Linux 지원

3. 클러스터형 시스템(Clustered Systems)

클러스터 시스템 또한 여러 개의 CPU들이 함께 계산 작업을 실행한다.

클러스터 시스템은 둘 이상의 독자적 시스템 또는 노드들 을 결합하여 구성한다는 점에서 전형적인

다중처리기 시스템과 차이가 난다.

클러스터 시스템은 저장장치를 공유하고 근거리 통신망(LAN) 고속의 상호 연결망(interconnet) 으로 연결된다.


클러스터링은 통상 높은 가용도(availability) 제공하기 위해 사용. 즉 클러스터 내 하나 이상의 컴퓨터 시스템이 고장 나더라도 서비스는 계속 제공. 각 노드는 하나 이상의 다른 노드 들을 감시하며, 고장 나면 저장장치에 대한 소유권을 넘겨 받고, 그 노드에서 실행 중이던 응용 프로그램을 다시 시작한다.

클러스터는 고성능 계산(high-performance computing) 환경을 제공한다. 이점을 활용하기 위해 병렬화(parallelization)를 사용한다.


비대칭형 클러스터링에서는 다른 컴퓨터들이 응용 프로그램을 실행시키는 동안 한 컴퓨터는 긴급 대기(hot-standby) 모드 상태를 유지하며, 활성 서버들을 감시하는 작업만 실행

대칭형 클러스터링에서는 둘 이상의 호스트들이 응용 프로그램을 실행시키고 서로를 감시한다. 가용한 하드웨어를 모두 사용하기 때문에 효율적이다.


데이터에 대한 공유 접근을 제공하기 위하여 시스템은 접근 간의 충돌이 발생하지 않는 것을 보장하는 접근 제어와 잠금 기법을 제공해야 한다.


운영체제의 구조

1.  다중 프로그래밍(Multi-programming)

다중 프로그래밍: 다중 프로그램(multiprogram)을 할 수 있는 능력

  • 운영체제는 한 번에 여러 작업을 메모리에 적재한다.

  • 주 메모리는 모든 작업을 저장하기에 너무 작기 때문에 디스크 상에 존재하는 작업 풀(pool) 유지한다.

  • 이 풀은 주 메모리 할당을 기다리며 디스크에 존재하는 모든 프로세스들로 구성된다.

다중 프로그래밍 시스템은 여러 가지 시스템 자원(CPU, 메모리, 주변 장치)을 효율적으로 이용

프로세스를 선택하는 결정인 CPU 스케줄링 이 필요하다.


프로세스(Process)는 메모리에 적재되어 있고, 실행되고 있는 프로그램


2. 시분할 시스템

시분할(또는 멀티태스킹: Multi-tasking)은 다중 프로그래밍의 논리적 확장

시분할 시스템에서는 CPU가 다수 작업을 서로 교대로 실행하지만, 빈번하게 교대가 일어나,
사용자는 각자 자기의 프로그램과 상호 작용할 수 있다.

시분할 시스템은 대화식(interactive) 혹은 실제 조작 가능한(hands-on) zjavbxj tltmxpadmf vlfdy

시분할 운영체제는 동시에 많은 사용자가 컴퓨터를 공유할 수 있게 한다.

시분할 시스템에서 운영체제는 적절한 응답 시간을 보장하기 위하여 작업들을 주 메모리에서 디스크로

적절하게 스왑인(swap-in) 또는 스왑아웃(swap-out)시킨다. -> 가상 메모리(virtual memory) 사용

시분할 시스템은 반드시 파일 시스템도 제공해야 하며, 디스크 관리 기법도 반드시 제공.

또한 부 적당한 사용으로부터 자원을 보호하기 위한 기법도 제공

작업 동기화와 통신 기법 제공. 교착 상태(deadlock)에 빠지지 않도록 해야 한다.


운영체제 동작

운영체제는 인터럽트 구동식(interrupt driven)

실행할 프로세스가 없고, 서비스할 입출력 장치도 없고, 응답해 주어야 할 사용자도 없다면, 운영체제는 기다린다. 사건은 거의 항상 인터럽트(interrput)나 트랩(trap)을 발생 시켜 신호를 보낸다.

* 트랩(Trap) 또는 예외(Exception)은 오류(0으로 나누기, 유효하지 않은 메모리 접근) 혹은 사용자 프로그램의 운영체제 서비스 실행 요청에 의해 유발되는 소프트웨어에 의해 생성된 인터럽트이다.

 



운영체제와 사용자는 컴퓨터 시스템의 하드웨어와 소프트웨어 자원을 공유하기 때문에 오류를 범위 안에 한정함을 보장해야 한다.


1.  이중 동작 모드(Dual-Mode Operation)

운영체제는 보호(Protection) 기법으로 이중 동작 모드를 제공한다.

두 개의 독립된 동작 모드, 즉 사용자 모드(User-mode)와 커널 모드(Kernel-mode)(슈퍼 바이저 모드, 시스템 모드, 혹은 특권 모드(privileged mode))를 필요로 한다.

모드 비트(mode-bit)는 커널 모드(0), 사용자 모드(1)로 구별한다.

  • 1. 시스템 부트(boot)시 하드웨어는 커널 모드에서 시작한다.

  • 2. 운영체제가 적재되고, 사용자 모드에서 사용자 프로세스가 시작된다.

  • 3. 트랩, 인터럽트가 발생 시 하드웨어는 사용자 모드에서 커널 모드로 전환. system-call
    * 전환 과정으로는 특권 명령, 입출, 타이머, 인터럽트 등

  • 4. 시스템 호출 다음 처리가 끝나면 사용자 모드로 복귀


2. 타이머(Timer)

프로그램이 무한 루프(infinite loop)로 돌거나, 제어가 운영체제로 복귀하지 않는 경우 타이머 사용

타이머는 고정, 가변(고정률의 클락(fixed-rate clock)과 계수기 구현)으로 나뉜다.



프로세스 관리

프로세스는 자신의 일을 실행하기 위해 CPU 시간, 메모리, 파일 그리고 입 출력 장치(IO decvice)를  포함한 여러 가지 자원을 필요로 한다.


프로그램은 디스크에 저장된 파일의 내용과 같이 수동적(passive) 개체인 반면,

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


프로세스는 시스템 내의 작업 단위이다. 한 프로세스의 실행은 순차적이다.

프로세스는 운영체제, 사용자 프로세스로 나뉜다.

모든 프로세스는 하나의 CPU 상에서 멀티플렉싱(Multiplexing) 함으로써 잠재적으로 병행 실행됨


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

  • CPU에게 프로세스와 쓰레드(thread) 스케줄링(Scheduling)

  • 사용자, 시스템 프로세스의 생성과 제거

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

  • 프로세스 동기화와 통신을 위한 기법 제공





메모리 관리

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

CPU 이용률과 컴퓨터의 응답 속도를 개선하기 위해 메모리 관리 기법이 필요하다.

운영체제는 메모리 관리와 연관 해 다음 업무를 책임진다.

  • 메모리의 현재 어느 부분이 사용되며, 누구에 의해 사용되는지 추적.

  • 어떤 프로세스를 메모리에 적재하고 제거할 지를 결정.

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


저장 장치 관리

파일: 저장장치의 물리적 특성을 추상화 하여 논리적인 저장 단위.

운영체제는 파일을 물리적 매체로 사상하며, 저장장치를 통해 이들 파일에 접근한다.


1. 파일 시스템 관리(File-System Management)

파일은 파일 생성자에 의해 정의된 관련 정보의 집합체이다.

일반적으로 파일은 프로그램(소스와 목적 프로그램)과 데이터를 나타낸다.

파일을 쉽게 관리하기 위해 디렉터리(Directory)로 구성

파일을 접근하기 위해 읽기,쓰기 권한을 구성한다.


2. 대용량 저장장치 관리

주 메모리는 모든 데이터와 프로그램을 수용하기에는 용량이 너무 작고, 전원이 꺼질 경우 저장하고 있던 데이터가 사라지기 때문에 컴퓨터 시스템은 반드시 주 메모리 내용을 저장하기 위해 보조 저장장치를 제공한다.

컴파일러, 어셈블러, 편집기, 포멧터 등을 포함한 대부분의 프로그램은 주 메모리에 적재될 때까지 디스크에 저장되며, 그들이 처리할 데이터의 출발지와 목적지로 디스크를 사용.

운영체제는 디스크 관리를 위하여 다음 업무를 책임진다.

  • 자유 공간(free-space)의 관리

  • 저장 장소 할당(allocation)

  • 디스크 스케줄링(Disk- Scheduling)


3. 캐싱(Cashing)

캐싱은 컴퓨터 시스템의 중요한 원리. 정보는 통산 어떤 저장 장치에 보관되는데, 사용됨에 따라 보다 빠른 장치인 캐시에 일시적으로 복사 된다. 그러므로 특정 정보가 필요한 경우 먼저 캐시에 그 정보가 있는 지를 조사해 본다. 있을 경우 직접 사용하고, 없을 경우 다시 사용할 확률이 높다는 가정 하에 캐시에 넣는다.


CPU에서도 다음에 실행될 것으로 예상되는 명령을 넣어 두는 명령 캐시를 이용한다.


4. 입출력 시스템(I/O-Systems)

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

입출력 시스템은 다음과 구성되어 있다.

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

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

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








보호와 보안(Protection and Security)

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

이를 위해 파일, 메모리 세그먼트, CPU 및 다른 자원들에 대해 운영체제로부터 적절한 허가를 획득한 프로세스만이 작업할 수 있도록 보장하는 기법이 필요


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

보호는 구성 요소 서브 시스템 간의 인터페이스에서 잠재적인 오류를 검출함으로써 시스템의 신뢰성을 높인다.


분산 시스템(Distributed Systems)

분산 시스템은 물리적으로 떨어져 있는 컴퓨터들의 집합이다. 사용자가 시스템 내의 다양한 자원들에 접근할 수 있도록 네트워크(Network)로 연결되어 있다. 네트워크 기능으로는 FTP, NFS 기능


네트워크는 노드 간의 거리에 의해 타입이 결정된다.

LAN(Local Area Network)은 한 방, 한 층, 또는 한 건물에 존재

WAN(Wide Area Network)은 통상 건물, 도시 또는 국가 사이를 연결한다.

MAN(Metro-politan Area Network)은 한 도시 내의 건물들을 연결


전용 시스템(Special-Purpose Systems)

1.실시간 내장형 시스템(Real-Time Embedded Systems)

내장형 시스템들은 매우 다양하며, UNIX와 같은 범용 운영체제를 실행시키면서 특수 목적을 가진 응용프로그램을 실행. 다른 시스템은 필요한 기능 만을 제공하는 내장형 운영체제를 가지고 있는 하드웨어의 형태를 취한다.


내장형 시스템은 실시간 운영체제(Real-Time OS)를 실행한다.

실시간 시스템은 명확하게 정의된, 고정된 시간 제약(Dead-line)을 가진다.



2. 멀티미디어 시스템(Multimedia Systems)

대부분의 운영체제는 텍스트 파일, 프로그램, 문서 편집기의 문서 및 스프레드 시트 등 전통적인 데이터를 처리하도록 설계된다.


멀티미디어는 오늘날 사용되고 있는 넓은 범위의 응용 프로그램을 기술한다.


3. 휴대용 시스템(Handheld Systems)

휴대 장치용 프로그램의 설계자들은 웹 페이지의 내용을 표시하는 방법으로 웹 잘라내기(Web Clipping)을 이용한다.













계산 환경

1.전통적 계산(Computing)

현재의 추세는 원격 접근과 이동성을 다양하게 제공. 웹 기술이 전통적인 계산의 경계를 확장

회사들은 자신의 내부 서버에 웹 접근을 제공하는 포털(portals)을 구현

네트워크 컴퓨터는 실질적으로 웹 기반 컴퓨팅을 이해하는 터미널을 말한다.


집은 홈 계산 환경을 보안 침해로부터 보호하기 위해 방화벽(fire-wall)을 가지고 있다.


2.클라이언트 서버 계산(Client-Server Computing)

클라이언트 시스템에 의해 생성되는 요구를 만족 시키기 위한 서버 시스템으로 동작한다. 이런 특별한 분산 시스템을 클라이언트-서버 시스템이라고 부른다.


서버 시스템의 분류

> 계산-서버 시스템

클라이언트가 어떤 작업을 요청할 수 있는 인터페이스를 제공한다. 그에 대한 응답으로 서버는

작업을 실행하고 그 결과를 클라이언트에게 돌려보낸다. ex) 클라이언트 요청에 응답하는 DB

> 파일-서버 시스템

클라이언트가 파일을 생성, 갱신, 읽기 및 제거할 수 있는 파일 시스템 인터페이스를 제공한다.

ex) 웹 브라우저 클라이언트에게 파일을 전달하는 웹 서버


3.피어 간 계산(Peer-to-Peer Computing) P2P

P2P 모델에서는 클라이언트와 서버가 서로 구별되지 않는다. 대신 모든 시스템 상의 모든 노드가 피어로 간주되고, 각 피어는 서비스를 요청하느냐 제공하는냐에 따라 클라이언트 및 서버로 동작된다.


4. 웹 기반 컴퓨팅(Web-Based Computing)

웹은 도처에 있으며, 네트워킹을 중요시하며, 유선 또는 무선 접근을 할 수 있다.

웹 기반 계산의 구현은 네트워크 연결을 비슷한 서버들의 풀에 분배하는 부하 균등기(load balancer)와 같은 장치를 탄생.


오픈소스 운영체제(Open-Source Operating System)

Linux(GNU/Linux)

> GNU 프로젝트는 컴파일러, 문서 편집기 및 유틸리티를 포함한 호환 툴 제공했으나, 커널은 비공개
   이에, 핀란드 학생이 유사한 커널을 개발하여 시초 Linux

BSD Linux





















































































'Linux' 카테고리의 다른 글

리눅스 활용을 위한 기본 지식  (0) 2015.12.19
Linux Overview  (0) 2015.12.19
System Mangement  (0) 2015.01.27
Shall Script  (0) 2015.01.26
Proc  (0) 2015.01.26
Comments