나의 운영체제 해방일지
불안한 마음이 여전히 지속된다. 그래서 폰을 내기
전에 구글링 하며 이것저것 찾아봤는데, 우연히
블로그 하나를 발견해서 저장해 두었다. 다음날 일어나서 다시 읽어보며, 내게 필요한 게 무엇인지 체크해 보았다. 운영체제를 공부해 보고 싶긴 한데 가볍게 훑어보자는 마음으로 강의를 들어보기로 했다.
🗓️ 23.09.29
1) 운영체제란?
컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층.
2) 운영체제의 목표
컴퓨터 시스템의 자원을 효율적으로 관리하기 위해서.
⚙️프로세서, 기억장치, 입출력 장치 등의 효율적 관리.
한정된 성능으로 최대 성능을 만들어내자!
🗓️ 23.09.30
1) 운영체제의 분류
- 동시 작업 가능 여부
1️⃣ 단일작업 (과거)
한번에 하나의 작업만 실행.
2️⃣ 다중작업 (오늘날)
동시에 2개 이상의 작업 처리.
- 사용자의 수
1️⃣ 단일 사용자
한번에 한명만 접근 가능
2️⃣ 다중 사용자
여러 명이 동시에 접근 가능
- 처리 방식
1️⃣ 일괄 처리
작업을 바로바로 처리하는게 아니라, 모아두고 한번에 처리
2️⃣ 시분할 (오늘날)
여러 작업이 수행될때 작은 시간단위(0.1초)로 나누어 번갈아 가며 처리. 바로바로 결과가 나옴
3️⃣ 실시간
데드라인이 있기에, 정해진 시간안에 결과가 나오는 것을 보장. 특수목적 시스템(미사일제어, 공장제어)
Multitasking, Multiprogramming, Time sharing
Multiprocess
위의 용어들은 여러 작업을 동시에 수행할 수 있는것을 의미한다. Multiprogramming은 여러 프로그램이
메모리에 올라가있는 것이고, Time sharing은 CPU의 시간을 분할해서 나누어 쓰는 것이다.
반면, Multiprocessor은 하나의 컴퓨터에 CPU가 여러 개 붙어있음을 의미하는데, 하드웨어적으로 다르다.
2) 운영체제의 예
1) 유닉스
코드의 대부분이 C언어로 이루어져 있다. 소스 코드가 공개되어 있으며, 다양한 버전이 존재한다. 또한 높은 이식성을 갖고 있는데 여러 컴퓨터에 호환이 잘 된다는 것을 의미한다.
2) 윈도우
MS사에서 IBM을 위해 개발했다. 여러 프로그램이 동시에 사용 가능하다. MS사의 다중 작업용 GUI 기반 운영체제이다.
3) 운영체제의 구조
🗓️ 23.10.01
1) 컴퓨터 시스템 구조
I/O device controller: 해당 I/O 장치유형을 관리하는
작은 CPU이다. (CPU가 하드웨어인 것처럼 마찬가지로 하드웨어이다.)
local buffer: 로컬 버퍼는 컴퓨터의 메모리에서 일시적으로 데이터를 저장하는 작은 공간이다. 프로그램이 데이터를 읽거나 쓸 때, 로컬 버퍼를 사용하여 데이터를 임시로 저장하고 나중에 처리하거나 전송한다.
interrupt line: 인터럽트 라인은 컴퓨터 시스템에서 발생하는 중요한 사건 또는 외부 신호를 처리하기 위한 특별한 신호 경로이다. 예를 들어, 하드웨어 장치나 외부 이벤트가 발생하면 인터럽트 라인을 통해 컴퓨터 CPU에 신호를 보내고, CPU는 현재 작업을 중지하고 해당 인터럽트를 처리한다.
* 현대의 운영체제는 인터럽트에 의해 구동된다.
register: 레지스터는 컴퓨터의 중앙 처리 장치(CPU) 내부에 있는 고속 메모리 위치이다. 레지스터는 데이터를 일시적으로 저장하고 연산을 수행하는 데 사용된다. CPU가 연산을 수행하려면 데이터를 레지스터로 로드하고, 연산을 수행한 후 결과를 다시 레지스터에 저장한다. 레지스터는 CPU가 빠르게 데이터에 접근하고 조작할 수 있도록 도와주는 핵심적인 하드웨어 구성 요소이다.
mode bit: 실행되는 것이 OS인지, 사용자 프로그램인지 구별해 준다.
mode bit이 0일 때: 사용자 프로그램을 수행 중인 경우
mode bit이 1일 때: OS 코드를 수행할 때
Interrupt나 Exception 발생 시 하드웨어가 mode bit을 0으로 바꾼다. 또한 사용자 프로그램에게 CPU를 넘기기 전에 mode bit을 1로 세팅한다. (mode bit을 통해 제어를 한다고 생각하면 좋을 듯하다.)
timer: 특정 프로그램이 CPU의 독점을 막기 위한 것.
OS가 CPU를 사용하다가, 사용자 프로그램이 CPU를 사용할 수 있게 해 준다. (CPU의 제어권을 넘겨주고 받는 것으로 이해하면 될 듯)
DMA controller: 직접 메모리에 접근할 수 있는 것.
DMA controller와 CPU 모두 메모리에 접근할 수 있게 해 주는 것이다. 그러나 이때 두 개 모두 메모리에 접근하면 문제가 생기기 때문에 memory controller가 존재하는 것이다.(중재역할/누가 먼저 접근하게 할지)
System Call: 사용자 프로그램이 운영체제의 서비스를 받기 위해 커널함수를 호출하는 것
아직 초반이라 그런지 생각보다 재미있다.
지금까지 개발을 하며, 이러한 지식 없이 단순히 굴러가는 코드를 작성했던 나를 반성했다. 해야 할 공부도, 알아야 될 지식도 많지만 그만큼 성장할 수 있다는 거니까. 열심히 공부해 보자!
'Computer Science > 운영체제' 카테고리의 다른 글
[운영체제] 군대에서 공부하기 Week4 (0) | 2023.10.22 |
---|---|
[운영체제] 군대에서 공부하기 Week3 (0) | 2023.10.15 |
[운영체제] 군대에서 공부하기 Week2 (3) | 2023.10.08 |