1. 운영체제
운영체제란 어떻게 보냐에 따라 달려있다.
- 사용자 입장: 사용자의 편의를 제공한다. 자원 관리에 대해선 신경을 쓰지 않음.
- 전체 컴퓨터 시스템 입장: 자원 관리
큰 컴퓨터: 큰 컴퓨터의 운영체제는 사용자의 편의성보단 자원 관리에 힘 쓴다.
중간 컴퓨터: 사용자 입장과 자원 관리 둘 다를 만족시킨다.
작은 컴퓨터(스마트폰): 사용자의 편리에 더 힘쓴다.
운영체제는 무엇을 하는가?
- 운영체제는 자원 할당자이다.어떠한 사용자가 어떠한 프로그램을 쓸 것인지, 자원 사용을 효율적으로 하기 위함이다.
- 프로그램 실행에 필요한 자원들이 있는데 운영체제는 이 자원들을 관리하는 역할을 한다.
- 운영체제는 프로그램 제어자이다.
- 컴퓨터에 있는 응용 프로그램들은 언제든지 문제를 일으킬 수 있는 아이들이다. 따라서 다른 프로그램에 어떤 응용 프로그램의 에러가 전파되는 것을 막는 역할을 한다.
Kernel (운영체제의 핵심 기능, 커널)
컴퓨터가 동작하는 중에 늘 메모리에 올라가있는, 컴퓨터가 작동할 때 항상 동작하고 있는 부분이다.
응용 프로그램 | 시작과 종료가 있음. |
---|---|
커널 | 종료가 없음( 컴퓨터 셧다운 전) |
컴퓨터와 컴퓨터 사용자 간의 중간 역할을 해주고, 하드웨어의 효율적 사용을 도와준다.
전체 컴퓨터 시스템의 구조
하나의 컴퓨터 시스템은 하드웨어, 사용자, 응용프로그램, 운영체제로 이뤄져있다.
하드웨어는 컴퓨터의 자원이다.
운영체제는 자원의 위에 있는 것처럼, 자원의 관리자 역할을 한다.
응용프로그램은 우리가 컴퓨터를 사용하는 궁극적 목적이라고 볼 수 있다. 운영체제는 그냥 서비스를 제공해주는 것이다. 응용프로그램이 실행하려면 하드웨어 자원이 있어야 하는데, 이 자원들을 운영체제가 관리해준다고 보면 되겠다. 자원을 잘못 이용하거나 악용할 수도 있기 때문에 이것을 관리해주는 것이다.
- Hardware( = resource)
- : CPU,memory,I/O devices
- Operating System
- : 하드웨어 자원들을 다양한 응용프로그램이나 사용자가 사용할 수 있게 관리, 할당해줌.
- Application Programs
- :Word processors, compilers, web browsers, database systems, video ga
mes.. 등, 사용자가 사용하는 프로그램들 모두를 가르킴. - Users
- : 사람이 될 수도, 기계가 될 수도, 서버가 될 수도 있다 ( 다른 컴퓨터들)
전체 시스템의 구성 요소
모든 하드웨어 자원들은 버스로 연결이 되어있다.
CPU , device 는 다 버스를 통해 메모리를 거치게 된다.
CPU 의 동작과 입출력 장치 등 각종 자원들은 독립적으로 실행한다.
- CPU 와 무관하게 입출력하고, 입출력과 무관하게 CPU 가 동작한다.
- 이 CPU 와 입출력이 가능하게 하려면 메모리를 사용해야 한다. (메모리 사이클 경쟁)
- 동시에 접근 했을 땐 I/O device 가 우선권을 가진다.
컴퓨터 시작의 동작
- CPU 와 입출력 장치는 서로 독립적으로 동작한다.
- 모든 디바이스는 로컬 버퍼가 있다.
- CPU 는 register가 있다. (메모리 장치)
- I/O 장치는 메인 메모리와 로컬 버퍼 안에서 왔다갔다 한다.
- 일련의 입출력이 끝나게 되면 interrupt 가 발생한다.
interrupt
= CPU에게 알려주고 싶은 것이 있을 때, I/O devices 가 보내는 것이다. (소통)
CPU 가 입출력을 하고 싶을 때가 있을 것이다. 그러면 CPU 가 입출력 장치에게 입출력을 시작하라고 명령을 지시한다.
하드웨어 interrupt
CPU → 입출력 시작해 → I/O devices → 입출력 동안 CPU 는 자신이 하는 일을 계속 한다.
I/O devieces→ 입출력 완료했어!(interrupt)
→ CPU는 자신이 하던 일을 멈춘다. 그때 하고 있던 일을 메인 메모리 어딘가에다가 저장하게 된다 (CPU의 상태 값) → “interrupt 서비스 루틴”이라는 함수를 실행시킨다. → 아까 최초로 하던 일을 멈췄던 지점으로부터 실행을 이어간다.
- interrupt serive routin은 커널 프로그램의 일부이다.
- interrupt vector : interrupt 를 보낼 때, 디바이스가 자신의 고유 넘버를 같이 보낸다. 이것을 통해 CPU 가 어느 장치에서 보낸 Interrupt 인지 알 수 있게 된다.
- polling: vector 번호가 없는 device 이면 CPU 가 하나하나 너 누구니? 하고 물어보는 방식이다.
- interrupt 발생 시에 CPU 가 실행하고 있었던 명령의 메모리 주소를 어딘가에 저장한다.
soft ware interrupt? → exception이라고 부른다.
Trap:(soft-ware interrupt)
cpu 내부 동작 중에 더 이상 명령을 정상으로 수행시킬 수 없을 때 실행된다. (오류 상황이 발생했을 때) 발생시 커널프로그램이 실행된다. exception 발생 시에는 행동이 interrupt 와 똑같다.
ex) 나눗셈 하고 있었는데 나누는 수가 0인 경우⇒ exception 발생⇒ 강제 종료를 시킨다.
interrupt 상황: cpu 가 하던 일을 멈추고,그 시점을 스택에 저장하고, interrupt 서비스 루틴을 진행하게 된다.
딱히 오류가 나지 않아도 interrupt 상황으로 cpu 를 만들어 커널모드로 바꾸게 할 수 있다. 유저모드는 특권명령을 사용하지못하기 때문에 운영체제의 특수 명령을 실행하기 위해 인터럽트로 모드를 바꾼다.
하나의 입출력이 시작~완료되는 구조
- 파란선들: CPU, I/O 장치는 서로 독립적이다.
- (1): CPU가 입출력을 지시했다.
- (2): 지시 받은 입출력을 실행하려고 I/O device 가 일을 하는 모습과 , 입출력 지시 후 CPU 는 자신의 일을 수행하는 모습이다. (각자 자기의 갈길을 간다.)
- (3): 입출력 장치가 입출력 완료했다고
interrupt
를 CPU에게 전달한다. - (4): CPU가
interrupt
를 받고 하던 일을 멈추고, 자신이 하던 일을 (자신의 상태를) 저장 후interrupt service routin
으로 분기한다. - (5): 끝나면 다시 자기 할 일을 하는 모습이다.
Main Memory: CPU 가 직접 접근할 수 있는 유일한 메모리. 주소를 이용해 접근한다. 메인 메모리가 아닌 다른 storage 에는 직접 접근을 할 수 없다. 예를들어 하드웨어 저장공간에 접근을 하려면 메인메모리로 옮겨야한다.
random access: 어디에 메모리가 위치해있던간에 랜덤으로 똑같은 시간으로 접근한다.
Secondary storage(보조기억장치):메인 메모리가 아닌 것은 보조기억 장치이다.
- Magnetic disk: 접근속도가 빠른 하드디스크는 메인 메모리의 연장으로 인식이 된다. 원반으로 되어있고, 원반의 표면에 데이터가 저장이 된다. Track 의 Sector 을 나눠서 저장. 하드 디스크는 random access 는 아니다. 하드디스크의 어디에 저장되어있냐에 따라 접근속도가 다르다.
- SSD: 하드디스크의 대처용. 하드디스크보다는 접근이 훨씬 빠르다.
Storage Hierarchy
- 위쪽으로 갈수록 접근속도가 빠르다. 그러면 register 가 접근속도가 가장 빠른 거겠죠?
- 위로 올라갈수록 용량이 줄어든다.
- 위로 올라갈수록 휘발성이 있다.
Register, cache ,main memory 외에는 SSD 밑으로는 다 보조기억장치이다.
메인 메모리의 별표(데이터나 명령)를 CPU 가 접근 할 때, BUS 를 거쳐서 메인 메모리에 있는 별표를 가져오게 된다.
CPU는 이런 메인 메모리에서 가져온 것들을 자신의 cache 공간에 복사해서 다음 번에 똑같은 것을 가져올 때는 메인 메모리까지 가지 않고 cache 의 복사본을 가져오면 되는 것이다.
cache: bus 를 거치지 않아도 되기 때문에 접근 속도가 빨라진다!
→ 하드웨어의 캐시
Caching
접근 속도가 느린 장치의 데이터의 복사본을 접근 속도가 빠른 장치의 어딘가로 저장해놓는 것이다.
느린 장치 | 빠른 장치 |
원본 | 복사본 |
- cache 의 용량은 제한적이다.
- cache replacement: cache 가 꽉 차면 기존의 일부를 비우게 되는 것이다.
- CPU 가 데이터를 원할 때는 자신의 캐시부터 뒤진다. 원하는 데이터가 없으면 원본 데이터를 가지러 간다.
캐싱의 예
캐싱의 주체는 운영체제도 될 수 있고, 응용 프로그램도 될 수 있고, 데베가 될 수 있다. 데이터 베이스는 자신의 독자적인 캐싱 알고리즘을 가지고 있다.
운영체제의 캐싱: disk file → main memory 에 유지 (파일접근속도향상)
웹(응용프로그램)의 캐싱: 한 번 접속한 홈페이지의 html을 복사해서 저장하는 것.
넷플릭스 영상 CDN? 도 캐싱이다.
입출력 구조
program I/O (Synchronous 동기)
⇒ 입출력을 게시해놓고, 모든 입출력에 다 관여하는 형식.
ex) 저속의 장치
interrupt I/O (비동기)
⇒ CPU 가 I/O 에게 입출력을 게시한 후에 CPU 는 자기 할 일을 하는 방식.
DMA(Direct Memory Access)
⇒ CPU 접근 없이 디스크가 직접 메인 메모리에 접근하는 방식.
: CPU 가 입출력 하고 지시할때, 입출력 데이터의 주소만 장치에게 준다. 해당 장치가 메모리로부터 직접 접근하는 방식이다. 하드디스크 같은 고속 장치들은 DMA 방식을 사용한다.
현대 컴퓨터의 동작: 폰노이만 컴퓨터
프로그램이 메모리에 로드된 후에 실행되는 구조.
CPU↔ memory
실행중인 프로그램: program(명령+명령이 사용할 데이터) 이 메인 메모리에 있어야 한다.
이 명령을 하나씩 가져와서 사용하는 것이 CPU 이다.
CPU 는 명령을 가져올 때도 메인 메모리에 접근하고, 명령을 실행할 때도 명령에 필요한 데이터를 가져오기 위해 메인 메모리에 접근하게 된다.
CPU↔ I/O devices
CPU 가 입출력 요청을 보낸다. 입출력 과정의 디바이스에게 줘야되는 데이터가 있으면 두가지 방식으로 줄 수 있다.
- CPU 가 모든 데이터에 개입을 해서 한 바이트씩 줄 수 있고, (프린터 같은 입출력 장치)
- 다량의 데이터를 출력해야 하면 디바이스에게 메모리에 직접 접근하라고 시킨다.
(DMA)
(하드디스크)
입출력이 완료되면 입출력장치가 **interrupt**
를 보낸다.
- interrupt 후: CPU 는 하는 일을 멈춘다. → 자신의 현재 상태를 메모리에 저장한다. → interrupt service routin 을 실행한다. → 다 끝나고 나면 다시 하던 일을 한다.
CPU↔ memory ↔ I/O device
memory cycle stilling: CPU와 입출력 장치가 동시에 메모리에 접근할 때 입출력 장치가 우선권을 가진다.
컴퓨터 시스템 구조
Multiprocessors
processor ? CPU.
원래 하나만의 프로세서를 사용해왔으나 최근에는 여러개의 프로세스를 사용하기 시작했다.
비대칭구조: CPU 가 여러개인데, 그 CPU 들의 관계가 대등하지 않은 것이다.
- slave CPU, sub CPU, main CPU ..
대칭구조: 여러개의 CPU 가 동등한 관계에 있는 것이다.
UMA: 모든 프로세서에서의 메모리 접근에 동일한 시간이 걸린다.
NUMA: 어느 메모리에 접근하냐에 따라 메모리 접근 시간이 달라진다.
→ 이렇게 나누는 기준이 많지만 지금은 Symmetric Multiprocessing Architecture, 즉 SMA 라고 부르는 구조를 따른다.
Symmetric Multiprocessing Architecture
- 대칭적인 구조.
- 메모리는 하나, 여러개의 CPU 가 하나의 공통 메모리를 가진다.
- 병렬화 가능→ 처리량의 증가.
- 신뢰성 증가. 복수개의 프로세서가 있어 일부가 고장나도 동작을 이어나갈 수 있다.
Dual-core
하지만 최근 CPU 설계에서는 하나의 chip 에 여러 개의 코어를 포함시킨다.
single core 보다 훨씬 효율적이다.
파란색이 CPU 칩 그 안에 코어가 두개. 코어하나가 별도의 CPU 하나의 역할을 한다. 이들도 공통의 메모리 접근을 한다.
블레이드 서버
: 여러개의 처리기 보드, 입출력 보드, 네트워킹 보드 등을 하나의 실시에 장착되는 보드.
독자적으로 부팅이 가능하며 자신만의 운영체제를 실행한다.
ex) 데이터 센터?
SMA vs dual core?
듀얼코어시스템→ 두 개의 processor 을 갖는 multi processor 시스템과 운영체제 입장에선 그렇게 다를바가 없다고 한다.
Clustered Systems (컴퓨터 여러대)
둘 이상의 독자적인 컴퓨터 시스템이 비교적 고속의 네트워크로 묶여 마치 단일 컴퓨터 시스템처럼 동작하는 것이다.
mutisystem 처럼 보이지만 컴퓨터 여러대가 한 대로 보이는.. “같이 일하는 복수의 시스템” 이다.
- 여러대의 컴퓨터가 고속 네트워크나 LAN 으로 연결되어있다.
- storage Area network(SAN) 을 통해 저장 장치를 공유한다.
- SAN 을 사용하게 되면 자신의 디스크로 간주할 수 있게 된다.
사용하는 경우
- 고가용성: HA시스템 (High availability)를 위해서.ex) 웹 서버를 두개의 노드로 돌려 acting, stand-by로 나뉘어 돌린다. 서비스가 단절되는 시간 줄임. (비대칭적)
Asymmetric clustering(비대칭적) 한 노드는 acting , 한 노드는 stand-by 형태로 나뉘어 한 노드가 죽으면 stand-by 하고 있던 노드가 실행해 서비스 단절을 줄인다. Symmetric clustering(대칭적) 모든 노드가 동일한 기능 수행. 다 active 이다. 웹 서비스 요청이 들어오면 이 노드와 저 노드 둘 다 act 를 한다. - 컴퓨터가 다운되는 경우 그 기간 동안 서비스가 단절되는 경우를 막기 위해서 사용된다.
- HPC(high-performance computing): 성능을 높이기 위해서“parallelization”
- 하는 일을 쪼개서 여러개의 노드가 그 쪼갠 일들을 한다.
운영체제
운영체제 구조 : multi - programming
- 운영체제가 해야하는 일: 여러개의 job(실행해야 되는 응용 프로그램)+ Kernel 이라는 운영체제 프로그램
- muti programming 을 한다. 운영체제는 메모리 내의 여러개의 job 중에서 하나를 선택해서 실행한다.
multi - programming : CPU 의 효율적인 사용.
모든 프로그램은 CPU 하나만 가지고 동작을 하지 않는다. 무조건 입출력 해야할 때가 올 것이다. 1번 job이 CPU 가지고 동작을 하다가, 입출력 해야하는 순간이 온다. 그러면 1번 job 이 입출력을 하고 있는 동안에 2번 job에게 CPU 를 전달하게 된다. 그럼 또 2번 job 이 입출력 하는 동안에 3번에게 간다…이런 형태로 진행된다.
kernel:1번 job→ 2번 job으로 CPU 사용이 바뀌는 이런 switch 동작은 운영체제의 커널이 개입을 해서 CPU 를 job에게 주게 된다.
job scheduling: 다음 번 job 을 선택하는 동작. CPU 사용의 순서를 결정하는 것.
Timesharing System=(multi - tasking)
mulit programming 에서는 CPU 의 변환이 입출력에 의해서 이뤄졌다. time sharing 시스템은 CPU를 짧게 사용하고, 입출력을 자주하는 시스템들이다.
그렇다면 CPU 를 오래 사용하려고 하는 프로그램들은? 👉커널이 오랫동안 사용하려고 하면 CPU 를 뺏어버린다.
- interactive system: CPU 사용은 적으며 입출력을 자주하는 프로그램이다.
- 스마트폰, 아이패드 등등..
- 응답시간이 짧다.
- 응답 시간: 프로그램이 시작해서 첫번째 입출력을 할 때까지의 시간이다.
- timesharing system 에서 실행중인 프로그램을
Process
라고 한다.
→ 앞으로 process 라고 불리우는 말들이 나오는 모든 것들은 timesharing system 이라고 보면 되겠다.
CPU scheduling
: 여러개의 process 중 하나를 선택하여 cpu 를 넘겨주는 것.
time sharing system은 수백개를 가지고 동작한다. 동시에 100개, 200개 동시에 실행시키는 것은 CPU 에선 문제가 되지 않으나(CPU 사용시간이 적기 때문이다.),프로그램을 실행시키려면 메인 메모리에도 적재가 되어야 한다.이 대규모의 프로그램들이 M.M 에 올라가게 되면 문제가 된다.
**Swapping
:** 하드디스크를 메인 메모리의 확장으로 본다. 그래서 부족한 메인 메모리 (= 현재 프로세스가 너무 많음.) 에서 프로세스를 하드디스크로 내쫓아 버린다. 그럼 그만큼 메인 메모리를 확보될 수가 있다.
가상 메모리 (virtual memory)
:프로그램의 일부만 메인 메모리에 올려놔도 실행할 수 있게 한다. 프로그램이 실행되려면 메인 메모리에 적재가 되어야 하는데, 이 공간을 줄여주는 것이다.
운영체제 연산
interrupt driven(=운영체제의 동작): 운영체제의 동작은, 인터럽트의 발생에 의해서 커널 코드가 동작을 시작한다. interrupt 가 발생함으로서, 운영체제가 동작한다.
[interrupt 의 종류]
hardware | software | |
입출력장치가 보내는 interrupt | exception | trap명령 |
soft ware 동작 시 에러가 발생했을때 | CPU 가 interrupt 를 받은 상태로 바뀌게 됨. 그러면 커널코드로 점프한다. | |
trap 명령은 커널을 실행시키기 위한 수단이 되는 것이다. |
- CPU의 모드: Dual mode
- kernel mode(0): 모든 명령을 실행할 수 있다.
- user mode(1): 명령 중에 일부 명령은 실행에 제한이 있다. 커널에서만 할 수 있는 특권 명령은 실행할 수 없다. 이 모드에서는 일반 응용 프로그램을 실행한다.
- (2): System call 호출 (Trap 명령실행)
- ❗️모드는
유저모드
(비트:1)❗️ - 유저모드에서 커널모드로의 전환
- 프로세스를 생성하고 삭제한다.프로세스가 실행된다 ⇒ 프로세스를 생성한다.
- 프로세스가 종료한다? ⇒ 운영체제 입장에서 실행 중인 프로세스를 삭제한다.
- 프로세스의 중지와 재개를 담당한다.
- 프로세스의 실행을 잠시 멈춘다. 한 번 멈춘 프로세스는 다시 재개할 수 있다.
- 프로세스간 동기화 기능을 제공한다.
- 프로세스는 서로 독립적이다. A 는 B 의 눈치를 보지 않고 서로 행동한다. 평소에는 그런데, 프로세스끼리 가끔식 동기화가 필요할 때가 있다. 프로세스 실행의 동기화도 운영체제가 동기화 될 수 있도록 해준다.
- 프로세스 간 통신을 제공한다.
- 프로세스 간 통신: 프로세스끼리 아무렇게나 하는 것이 아니고, 운영체제가 제공하는 통신 수단에 의해서 진행이 된다.
- 데드락 (교착상태) 해결한다.
- 운영체제는 교착상태가 발생하지 않도록 관리하거나, 해결 수단을 제공한다.
- 병행 수행(concurrency),multiplexing: 프로세스는 time sharing system 안에서 병행 수행(concurrency)을 한다. 예를 들어 *CPU 가 하나 밖에 없기 때문에, 10개가 동시 실행할 순 없고, *multiplexing: CPU 하나를 10개가 조금씩 돌아가면서 쓴다.
- 프로세스를 실행하기 위해서는 자원이 필요한데, 이 자원들은 cpu, memory, I/O device 이다.
- 운영체제의 프로세스 관리
- (5):return mode bit = 1 , 유저 모드로 변환
- (4): execute system call : 커널에서 시스템 콜 실행, 처리 중.
- ❗️모드가
커널모드
로 바뀜(비트:0)❗️
## 운영체제의 메모리 관리
모든 데이터와 명령은 처리 전이나 후에 메모리에 존재한다. 이것을 언제 어떤 내용을 메모리에 적재할 지 관리해준다.
### 메모리 관리 목록
1. 어느 프로세스가 어느 메모리 영역을 사용할지를 관리한다.
2. 메모리의 할당과 해제를 관리한다.
프로세스는 실행할 때 메모리를 원하게 된다. 또, 종료할 때도 메모리를 반납하게 된다.
3. 처음에 실행을 시작할 때 외에 추가로 메모리 반납할때, 요구할 때도 운영체제가 관리한다.
## 운영체제의 저장장치 관리
저장장치: USB, Hard Disk, CD memory
**File**: file 시스템이 있어서 모든 데이터가 **파일 단위**로 저장이 된다.
**directory**: 이러한 파일들을 묶어서 관리한다
- 운영체제는 file 사용을 위해 file system 을 관리하며, file 단위로 데이터를 저장한다.
- directory를 사용해서 이 파일들을 묶어 쉽게 분류한다.
- 어느 사용자가 어느 파일에 접근 가능한지 접근 제어자도 제공해준다.
### 저장장치 관리 목록
1. file 삭제와 생성
2. file 과 directory 내용을 조작할 수 있는 수단을 제공
3. file 의 내용이 저장 장치에 기록될 수 있도록 함.
4. **stable-storage**: file 의 내용이 의도치 않게 삭제되는 것을 방지한다.
### 대용량 저장장치 (MASS-Storage) 관리
Hard disk같은 보조 기억 장치들은 메인 메모리에 저장하기 어려운 것들을 장기간 보존한다. 메인 메모리에 너무 많은 프로세스들이 있다 보면 메모리 관리하기가 힘들기 때문에 이들 중에 어떤 것들은 하드 디스크로 옮기게 된다. **컴퓨터의 전체 성능은 이 디스크 시스템과 알고리즘에 영향을 받을 만큼 보조기억장치의 성능은 매우 중요**하다.
1. 보조기억 장치의 빈 공간이 어디인지를 관리하고, 빈 공간에 새로운 파일을 할당.
2. **disk scheduling**: 저장 매체에 따라 파일 접근 시간이 많이 걸릴 수 있는데, 디스크 입출력을 할 때마다 어떤 순서로 디스크 블록을 읽을지를 고민한다.
3. 저장 장치를 할당한다.
저장장치들
저장장치들은 접근 시간과 저장용량이 반비례한다.
Registers | cache | main memory | solid state disk | magnetic disk |
---|---|---|---|---|
CPU 내에 탑재되어있는 메모리. | ||||
complier 가 관리 | hard ware 가 관리 | 운영체제가 관리 | 운영체제가 관리 | 운영체제가 관리 |
접근 시간은 빠르나 (CPU에 가깝기 때문) 용량은 하드디스크보다 적다. | 용량은 많고 접근 시간은 느림 | 용량은 많고 접근 시간은 느림 |
입출력 관리
운영체제는 사용자 시스템 대신 입출력을 수행해줘서 사용자는 특정 입출력 장치에 대한 이해가 없어도 된다. 운영체제의 가장 기본적인 목적은 입출력을 대신해주는 것이다.
- 입출력에 필요한 메모리 공간을 관리한다.
- buffering : 입출력 중인 데이터를 저장장치에 임시 저장
- caching: 저속의 저장장치 데이터 중 일부를 외부 저장 장치에 복사
- spooling: 입출력 데이터를 직접 장치에 보낸다. 메모리 공간에 저장한 후, 나중에 일괄 처리를 한다.
- 특정 입출력 장치를 읽고 쓰는 프로그램인 device driver 을 관리한다.컴퓨터 시스템마다 달려있는 입출력 장치가 다를 건데, 이 운영체제가 이런 것들을 다 가지고 있다고 보면 되겠다.
- 해당 장치에 대한 입출력 프로그램 모듈: device driver
- 범용 디바이스 드라이버 인터페이스를 제공한다.
- 특정 하드웨어에 관계없이 일관된 방법으로 입출력 장치를 제공한다.
운영체제의 보안과 보호
보호: 어느 사용자 혹은 어느 프로세서가 어떤 자원에 접근할 수 있는지 제어하는 매커니즘을 제공한다. 특히 다중 사용자 시스템에서는 자원의 소유권과 접근 기능이 중요한데, 이 정의 가능한 매커니즘을 제공한다. 어긋난 자가 있는지도 감시한다.
보안: 네트워킹이 되는 컴퓨터에서 시스템을 외부나 내부의 공격으로부터 방어하는 기능이다. 바이러스나, DOS 공격 등.
시스템에서는 사용자를 구분하고, 각 사용자가 어떤 일을 할 수 있는지를 정의한다.
- 유저의 아이디를 부여한다. 그러면 각 아이디마다 접근할 수 있는 파일이 연관이 되어있다.
- 권한의 상승도 가능하다.
안녕하세오 저는 똑똑해지고 싶은 버그 수집가에오
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!