우선 OS(operatingh system)이 무엇인지 한 번 더 짚고 넘어가자
A program that acts as an intermediary between a user of a computer and the computer hardware
유저와 하드웨어를 이어주는 인터페이스역할을 한다.
운영체제란 간단히 말하자면 하드웨어를 관리하기 위한 소프트웨어다.
운영체제의 3가지 목표가 있다.
1. Execute user programs and make solving user problems easier
사용자에게 프로그램을 실행할 수 있는 환경을 만든다.
//직접 유용한 기능은 못하지만 다른 프로그램이 유용한 기능을 할 수 있게 도와준다.
2. Make the computer system convenient to use
컴퓨터의 사용을 용이하게 한다.
3. Use the computer hardware in an efficient manner
하드웨어를 효율적으로 사용하게 해준다.
자원관리가 잘된다는 뜻이다. (Resource Management)
**여기서 efficient manner라는 것은 abstraction이라고 보면 되겠다.
2가지로 줄인다면
1. 효율성
2. 편의성
이라고 볼 수 있겠다.
그렇다면 운영체제를 왜 배워야하는가?
가장 큰 이유는
It is important first to understand the organization and architecture of computer hardware.
하드웨어 구조나 기능을 이해하기 위해 배운다고 보면된다.
다시 말해서 운영체제가 하드웨어를 다루는 방식을 알아야 하드웨어의 성능을 향상할 수 있다는 소리다.
As almost all code runs on top of an operating system.
모든 코드들은 운영체제 하에서 돌아간다.
프로그램? 운영체제를 알지 못하면 효율적으로 짤 수 없다는 이야기다.
컴퓨터 전체에서 OS의 역할을 알고 싶다.
그렇다면 컴퓨터는 어떤 식으로 나눌 수 있을까?
크게 4가지로 나눌 수 있다.
•Hardware –provides basic computing resources
-CPU, memory, I/O devices
1. 하드웨어
입출력장치, 메모리, CPU 같은 것들
•Operating system
-Controls and coordinates use of the hardware among various applications and users
2. 운영체제
Window, Unix ...
•Application programs
- define how the system resources are used to solve the computing problems of the users
ex) Word processors, compilers, web browsers, database systems, video games
3. 응용 프로그램
•Users
-People, machines, other computers
4. 사용자
이 4가지는 이렇게 맞물려있다.
위에 그림은 아주 중요하다. 알아놓자
다시 OS가 컴퓨터에서 얼만큼 차지하는지 알았다.
그렇다면 OS가 정확히 하는 일이 뭘까?
우선 제공하는 서비스는 여러가지가 있다.
User interface - Almost all operating systems have a user interface (UI).
ex) Varies between Command-Line (CLI), Graphics User Interface (GUI), Batch
-> UI를 제공함
Program execution - The system must be able to load a program into memory and to run that program, end execution, either normally or abnormally (indicating error)
-> 프로세스 생성과 같이 프로그램 실행에 필요한 자원들을 적절하게 할당함
I/O operations - A running program may require I/O, which may involve a file or an I/O device
-> 입출력 장치에 대해 buffering, spooling, caching으로 적절하게 관리
File-system manipulation - The file system is of particular interest. Programs need to read and write files and directories, create and delete them, search them, list file Information, permission management
-> 실제로 파일의 생성, 삭제나 디렉토리와 같은 기능 지원
기본적으로 open, close, read, write, create, delete 같은 것들임
Communications – Processes may exchange information, on the same computer or between computers over a network.
** Communications may be via shared memory or through message passing (packets moved by the OS)
-> 프로세스 간, 컴퓨터 간, 네트워크에서 실제로 통신을 통해 정보 교환
Error detection – OS needs to be constantly aware of possible errors
1. May occur in the CPU and memory hardware, in I/O devices, in user program
2. For each type of error, OS should take the appropriate action to ensure correct and consistent computing
3. Debugging facilities can greatly enhance the user’s and programmer’s abilities to efficiently use the system
-> 에러 감지
Resource allocation - When multiple users or multiple jobs running concurrently, resources must be allocated to each of them
** Many types of resources - Some (such as CPU cycles, main memory, and file storage) may have special allocation code, others (such as I/O devices) may have general request and release code
-> 우리가 컴퓨터로 여러가지 일을 할 수 있는 이유(알아서 자원할당)
Accounting - To keep track of which users use how much and what kinds of computer resources
-> 자원 사용량 추적 가능
Protection and security - The owners of information stored in a multiuser or networked computer system may want to control use of that information, concurrent processes should not interfere with each other
1. Protection involves ensuring that all access to system resources is
controlled
2. Security of the system from outsiders requires user authentication,
extends to defending external I/O devices from invalid access attempts
3. If a system is to be protected and secure, precautions must be
instituted throughout it. A chain is only as strong as its weakest link.
-> 보안
또한 2가지 관점에서 볼 수 있다
1. 유저
2. 시스템
우선 User View 를 먼저 보자
1. Users want convenience, ease of use and good performance
사용하기 쉽게 만들고, 성능을 끌어올린다.
** 자원 최적화에 신경쓰지 않아도 된다.
**개인 사용자에게 맞는 유형
2. But shared computer such as mainframe or minicomputer must keep all users happy
대형 컴퓨터나 미니 컴퓨터를 이용하는 사람들은 자원 공유와 정보 교환에 중점을 두고 있다.
즉, 운영체제는 자원 이용을 극대화 할 수 있게 설계된다.
3. Users of dedicate systems such as workstations have dedicated resources but frequently use shared resources from servers
워크 스테이션이나 서버의 네트워크에 연결된 사용자들은 전용 자원을 갖지만 자원을 공유해서 개인 사용 용이성과 자원 이용 간에 적절한 조화를 요구한다.
4. 스마트폰과 같은 기기들은 무선통신기술로 네트워크에 접속하게 하고이런 기기들은 터치스크린, 음성인식 등 많은 편의기능 제공한다.
5. Some computers have little or no user interface, such as embedded computers in devices and automobiles
이러한 기기들은 user intervention 없이 작동하게 만든다.
다음 System View
resource allocator (자원 할당자)
•Manages all resources(자원 관리)
CPU time이나 memory space, storage space, I/O devices 그런것들 관리한다.
•Decides between conflicting requests for efficient and fair resource use
알아서 자원을 할당해준다
control program (제어 프로그램)
•Controls execution of programs to prevent errors and improper use of the computer
특히 I/O devices 그리고 프로그램에 대한 통제를 한다.
그렇다면 우리는 OS를 다시 정의할 수 있을까?
OS가 존재하는 이유는 문제를 해결하는데 가장 효율적으로 접근시켜주는 도구라는 것에 있다.
여기서 문제란 사람의 원하는 작업을 말한다.
하드웨어가 문제해결을 위해 만들어졌으나 하드웨어 처리속도가 빨라지지만 이를 다루는 사람은
한계가 있었다.
그래서 만들어진 것이 프로그램이었다.
application program이라고 부른다.
이러한 프로그램들은 처음에 특정한 하드웨어에서만 작동했다.
그렇지만 이것도 비효율적이었고 I/O devices를 관리하고 자원도 할당할 수 있는 프로그램을 만들기로 했다.
그게 OS가 되었다.
그래서 이렇게 부르기도 한다.
커널(Kernel)
“The one program running at all times on the computer” is the kernel.
켜진 순간부터 꺼질 때까지 작동한다.
Kernel
- 운영체제의 핵심 부분으로, 자원할당, 하드웨어 인터페이스, 보안 등을 담당
Kernel에 덧붙여 2가지 타입의 프로그램이 있는데
system program, appplication program이 있다.
OS와의 관계 유무에 따라 나누어 진다.
++system program은 운영체제와 관련되어있으나 Kernel이 아닌 부분
++application program은 시스템 운영과 상관없는 모든 프로그램을 말한다.
또한 요즘에는 Mobile OS가 나왔는데
Kernel과 함게 middleware를 가진다.
middleware는 소프트웨어 프레임워크의 집합이다.
application developer 에게 유용한 서비스를 제공한다.
iOS, Android 같은 경우가 그렇다. database, multimedia, graphic를 지원한다.
'컴퓨터(Computer Science) > 운영체제(Operation System)' 카테고리의 다른 글
Readers and Writers Problem, 동기화 [운영체제] (0) | 2020.05.21 |
---|---|
Interrupt, 인터럽트란? [운영체제] (0) | 2020.05.21 |
Bounded-Buffer Problem(Producer-Consumer Promlem), 동기화[운영체제] (0) | 2020.04.22 |
저장구조, 입출력 구조, 메모리 특징[운영체제] (0) | 2020.04.14 |
Operating System - 컴퓨터 시스템 구조 [운영체제] (0) | 2020.04.13 |