일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- String
- binary search
- Two Points
- Dijkstra
- union find
- Brute Force
- Trie
- two pointer
- Hash
- 스토어드 프로시저
- Stored Procedure
- MYSQL
- 그래프
- 다익스트라
- SQL
- DP
- 이진탐색
- Today
- Total
codingfarm
1.서론(Introduction) 본문
Introduction
운영체제(Operating system)
-컴퓨터 하드웨어를 관리하는 프로그램이다.
-유저와 하드웨어 사이의 중재자 역할을 실행한다.
-응용 프로그램을 위한 기반을 제공한다.
-대형컴퓨터, 개인용컴퓨터, 휴대용컴퓨터 등 컴퓨터의 종류에 따라 다양한 환경을 제공
1.1 운영체제가 할 일(What Operating Systems Do)
컴퓨터 시스템에서 운영체제가 수행하는 역할에 대해 알아본다.
컴퓨터 시스템은 하드웨어, 운영체제, 응용 프로그램 및 사용자의 네가지 요소로 나눌 수 있다.
하드웨어는 중앙처리장치(CPU), 메모리 및 입출력(I/O) 장치로 구성되어 기본 계산용자원을 소프트웨어에 제공한다.
응용 프로그램은 워드프로세서, 스프레드시트, 컴파일러 그리고 웹 브라우저 등이 있고, 사용자의 계산 문제를 해결하기 위해 이들 자원이 어떻게 사용될지를 정의한다.
운영체제는 하드웨어를 제어하고 다양한 사용자를 위해 다양한 응용 프로그램간의 하드웨어 사용을 조정한다.
컴퓨터 시스템은 하드웨어, 소프트웨어 및 데이터로 구성되어 있다. 운영체제는 컴퓨터 시스템이 작동할 때 이들 자원을 적절하게 사용할 수 있는 방법을 제공한다. 이런점에서 OS는 정부(goverment)와 유사하지만 정부처럼 유용한 기능을 수행하지는 못한다. 유용한 기능을 수행하는것은 프로그램이다.
운영체제는 다른 프로그램이 유용한 작업을 할 수 있는 환경을 제공한다.
운영체제의 역할을 좀 더 완벽히 이해하기 위해 사용자와 시스템 두 관점에서 살펴본다
1.1.1 사용자 관점(User View)
컴퓨터에 대한 사용자의 관점은 인터페이스에 다라 달라진다.
개인용 컴퓨터
$\bullet$ 모니터, 키보드, 마우스 및 시스템 장치로 구성된 PC앞에서 작업한다.
$\bullet$ 한 상용자가 자원을 독점하게 설계되어있으며 목표는 사용자가 수행하는 작업을 최대화 하는것이다.
$\bullet$ 이경우 OS는 대부분 사용의 편이성을 위해 설계되고, 성능에는 조금신경을 쓰고 다양한 HW와 SW 자원이 어떻게 공유되는가와 같은 자원의 이용에는 전혀 신경을 쓰지 않는다.
즉, 다수의 사용자보다는 한 사용자가 사용하기에 적합하도록 최적화 된다.
대형컴퓨터, 미니컴퓨터
$\bullet$ 공용 컴퓨터에 연결된 터미널에 앞에서 작업한다.
$\bullet$ 다른사용자들과 동일한 컴퓨터를 다른 터미널에서 접근하고 있다.
$\bullet$ 사용자간에 자원을 공유하며 정보를 교환 할 수도 있다.
$\bullet$ 이 경우 OS는 자원의 이용을 극대화하도록 설계되어 모든 가용 CPU 시간, 메모리 및 입출력은 효율적으로 사용되며, 각 개인은 자신의 정당한 몫만 사용할 수 있다.
워크스테이션, 서버
$\bullet$ 네트워크에 연결된 워크스테이션 앞에서 작업한다.
$\bullet$ 사용자들은 자신이 맘대로 할 수 있는 전용 자원을 갖지만 네트워킹과 파일, 계산 및 프린트 서버와 같은 서버를 공유한다.
따라서 이경우에 OS는 개인의 사용 편이성과 자원 이용 간에 적절한 조화를 이루도록 설계된다.
1.1.2 시스템 관점(System View)
컴퓨터의 관점에서 운영체제는 하드웨어와 가장 밀접하게 연관된 프로그램이다.
따라서 사용자는 OS를 자원 할당자(resource allocator)라고 볼 수 있다.
여기서 자원이란 HW와 SW의 전반적인 구성요소들 즉, CPU시간, 메모리 공간, 파일 저장 공간, 입출력 장치 등이다.
OS는 이들 자원의 관리자로서 동작하며, 특정 프로그램과 사용자의 요구사항 및 작업 수행을 위해 필요한 자원을 할당한다.(이는 메인 프레임이나 미니컴퓨터처럼 동시 접근을 허용할 경우 매우 중요한 개념이다.)
OS를 바라보는 다른 관점은 여러가지 입출력 장치와 사용자 프로그램을 제어하여
1. 오류와 부적절한 사용을 방지
2. 사용자 프로그램이 실행하는 입출력 장치의 연산
위 2가지를 가능케 하는 측면에서 제어 프로그램(control program)이라 볼 수 있다.
1.1.3 운영체제의 정의
무어의 법칙(moore's law)와 함께 집적 회로의 트랜지스터수는 18개월마다 배가되어 왔으며 이에 따라 컴퓨터의 기능은 확대되고 더 작아지고 용도가 다양해젔으며 다양한 OS가 등장했다.
컴퓨터는 게임기, 음악연주기, 케이블 TV 튜너 및 산업제어등 수많은 시스템의 기반이 되며
요리, 자동차, 선박, 항공우주등 가정 및 사업체에 존재한다.
사무용컴퓨터에서 슈퍼컴퓨터까지 그 성능과 기능또한 굉장히 다양하다.
이렇듯 일상부터 산업까지 다양한곳에 스며든 OS에 대한 완벽한 정의는 없다.
어느부분이 OS에 속하고 그렇지 않은지에 대한 보편적인 기준도 없다.
OS에 어떤 기능이 포함되는가는 시스템에 따라 현저히 달라진다.
OS는 컴퓨터에서 항상 실행되는 하나의 프로그램으로 일반적으로 커널(kernel)이라 불린다.
시스템 프로그램(system program)은 OS와 연관되어 있으나 반드시 커널에 포함될 필요는 없는 프로그램이다.
응용 프로그램(application program)은 시스템의 작동과 관계 없는 모든 프로그램이다.
OS의 구성요소가 무엇인가라는 문제는 점점 더 중요해지고 있다. 오늘날 휴대전화 장치의 OS는 이를 구성하는 기능의 수가 증가하고 있으며, 이들은 커널외에 미들웨어(middleware)-응용 개발자에게 추가 서비스를 제공하는 소프트웨어 프레임워크 집합을 포함한다.
실제로 Android와 iOS는 핵심 커널과 더불어 DB, 멀티미디어 및 그래픽스를 지원하는 미들웨어를 제공한다.
1.2 컴퓨터 시스템의 구성
1.2.1 컴퓨터 시스템 동작(Computer-System Operation)
현대의 범용 컴퓨터 시스템은 하나 이상의 CPU와 다수의 장치 제어들로 구성되며 이들은 공용 버스로 연결된다.
CPU와 장치 제어기들은 이 버스를 통하여 공유 메모리에 접근할 수 있다.
각 장치 제어기는 특정 장치(ex : 디스크 드라이브, 오디오 장치, 비디오 디스플레이...)를 관리한다.
CPU와 장치 제어기는 메모리 사이클을 얻기 위해 경쟁하면서 병렬 실행될 수 있다.
공유 메모리에 대한 질서 있는 접근을 보장하기 위해 메모리 제어기가 메모리 접근을 동기화 시킨다.
컴퓨터의 작동은
1. 컴퓨터 구동
2. 커널 적재
3. 시스템 및 사용자에게 서비스 제공
전반적으로 위의 3가지 과정으로 이루어 진다.
부트스트랩 프로그램(bootstrap program)
$\bullet$ 컴퓨터가 구동하기 위해서는 실행시키기 위해 가지고 있는 초기 프로그램이다.
$\bullet$ 전형적으로 ROM(Read-Only Memory)에 저장되며 펌웨어라고 알려져 있다.
$\bullet$ CPU 레지스터를 시작으로 장치제어기, 메모리 내용등을 포함한 시스템의 모든 측면을 초기화 한다.
$\bullet$ OS를 적재하는 방법 및 실행을 시작하는 방법을 알아야 하며, 이를 위해 OS kernel을 찾아 메모리에 적재해야 한다.
시스템 프로세스(System Process) or 시스템 데몬(System Daemon)
$\bullet$ 커널이 아닌 스시스템 서비스에 의해 제공된다.
$\bullet$ 부트시에 메모리에 적재되어 커널이 실행되는 동안 계속 실행된다.
UNIX에서는 첫 시스템 프로세스가 "init"이며 init이 다른 많은 데몬을 시작한다. 이 단계가 끝나면 시스템이 완전히 부트된 상태이며 이 시스템은 사건(event)이 발생하기를 기다린다.
인터럽트(interrupt)
$\bullet$ HW나 SW가 우선순위가 가장높은, 당장해결해야할 작업을 CPU에 요청할때 보내는 신호이다.
$\bullet$ 사건은 HW 또는 SW로부터 발생한 인터럽트(interrupt)에 의해 전달받는다.
$\bullet$ HW는 시스템 버스를 통해 CPU에 신호를 보내 인터럽트를 발생시킨다.
$\bullet$ SW는 시스템호출(system call) 또는 모니터호출(monitor call)이라 불리는 연산을 실행하여 인터럽트를 발생시킨다.
$\bullet$ CPU가 인터럽트 되면, CPU는 하던일을 즉시 중단하고 지정된 위치로 실행 위치를 옮긴다. 이 지정된 일반적으로 인터럽트를 처리하기로 되어 있는 서비스 루틴의 시작 주소가 기록되어 있다.
$\bullet$ 인터럽트 서비스 루틴이 실행된 후 완료되면 CPU는 인터럽트 되었던(인터럽트 신호에 의해 중단됐던) 연산을 재개한다. 이러한 연산의 시간표(time line)은 아래와 같다.
1.2.2 저장장치 구조(Storage Structure)
CPU는 명령어를 메모리에서만 가져올 수 있으므로 프로그램이 메모리에 있어야 코드의 실행이 가능하다.
범용 컴퓨터는 대부분의 프로그램을 메인 메모리(main memory) or RAM(Random Access Memory)라 불리는 재기록 가능한 메모리에서 가져온다.
전원이 없는상황에서도 데이터가 남기를 바란다면 ROM(Read Only Memory)를 사용해야한다.
일반적으로 RAM을 휘발성(volatile) 저장장치, ROM을 비휘발성 저장장치라고 한다.
1.9 보호와 보안(Protection and Security)
컴퓨터 시스템이 다수의 사용자를 가지며 다수의 프로세스의 병렬 수행을 허용한다면 데이터에 대한 접근은 반드시 규제되어야 한다.
보호와 보안을 제공하기 위해서는 시스템의 모든 사용자들을 구분할 수 있어야 한다.
대부분의 OS들은 사용자 이름과 연관된 사용자 식별자(user IDs)의 리스트를 유지한다.
Windows용어로는 보안 식별자(SID, security ID)라고 한다.
식별자는 사용자마다 할당되고 시스템에서 유일한 값을 가진다.
'Computer Science > OS' 카테고리의 다른 글
4. 스레드(Threads) (0) | 2020.11.01 |
---|