운영체제란 무엇인가?
1. 운영체제의 정의
- 컴퓨터 하드웨어와 소프트웨어의 자원을 관리하고 컴퓨터 프로그램을 위해 보편적인 서비스를 제공하며 컴퓨터 자원을 독점적으로 관리하는 시스템 소프트웨어
- 즉, 하드웨어 바로 윗단에 설치되어 사용자 및 다른 소프트웨어와 하드웨어를 연결하는 계층
- 좁은 의미의 운영체제
: 커널이라고 부름 (운영체제의 핵심적인 부분, 컴퓨터 전원을 켠 다음 부팅 후 항상 메모리에 상주하는 부분)
- 넓은 의미의 운영체제
: 커널 + 각종 시스템 유틸리티라고 부름
-> 메모리에 상주하지 않는 별도의 독립적 프로그램이라서 운영체제에는 포함시킴, 컴퓨터 시스템을 관리하는데 전반적으로 필요한 부분이라고 생각하면 됨
2. 운영체제의 목적
- 컴퓨터 시스템을 편리하게 제공하는 환경을 구성해줌
- 운영체제는 동시 사용자와 프로그램들이 각각 독자적 컴퓨터에서 수행되는 것 같은 환상을 제공
- 하드웨어를 직접 다루는 복잡한 부분을 운영체제가 대행함. 즉, 자신의 프로그램만 컴퓨터에서 실행되는 것 같지만 한 컴퓨터에서 내부적으로 동시적으로 동작할 수 있도록 관리를 잘하는 것임
- 컴퓨터 시스템 자원을 효율적으로 관리
- 프로세서, 기억장치, 입출력 장치 등의 주어진 하드웨어 자원들로 효율적 관리
- 사용자 및 운영체제 자신의 보호
- 소프트웨어 자원인 프로세스, 파일, 메시지 등을 관리함 -> 실행 중인 프로그램에게 짧은 시간씩 CPU를 번갈아 할당하고 메모리 공간을 적절히 분배하도록 함
💡CPU나 I/O장치들은 주어진 명령만 실행하고 운영체제는 전체적인 관리를 하는 두뇌 역할, 즉 통치자 역할을 함!
3. 운영체제의 분류
- 동시 작업 가능 여부에 따라 나눌 경우
1) 단일 작업
- 한 번에 하나의 작업만 처리 -> 한 명령의 수행을 끝내기 전에 다른 명령을 수행시킬 수 없음
2) 다중 작업
- 동시에 두 개 이상의 작업 처리 -> 한 명령의 수행이 끝나기 전에 다른 명령이나 프로그램을 수행할 수 있음
- 사용자의 수에 따라 나눌 경우
-> 컴퓨터 한 대를 여러 사용자가 동시에 접속할 수 있는지에 따라 나눔
1) 단일 사용자
- 스마트폰, 한 컴퓨터에 한 순간에 사용자 한 명만이 사용함
2) 다중 사용자
- 한 개의 컴퓨터로 여러 사용자가 터미널 형태로 동시에 접속해서 사용
- 처리 방식에 따라 나눌 경우
1) 일괄 처리
- 작업 요청의 일정량을 모아서 한꺼번에 처리
- 작업이 완전 종료될 때까지 기다려야 함
- interactive한 방식이 아님 -> 한꺼번에 모아서 처리함
2) 시분할 방식
- 여러 작업을 수행할 때 컴퓨터 처리 능력을 일정한 작은 시간 단위로 분할하여 사용
- 일괄 처리 시스템에 비해 짧은 응답 시간을 가짐
- interactive한 방식 -> 컴퓨터 키보드를 두드렸을 때 바로 화면 상에 나올 수 있게 함
3) 실시간
- 정해진 시간 안에 결과가 반드시 종료됨이 보장되어야 하는 실시간 시스템을 위한 OS
- Deadline에 맞추어 정해진 시간 안에 특정한 일이 종료되는 것을 보장함
⬇️ 실시간 방식의 종류
- Hard realtime system(경성 실시간 시스템) - Deadline을 무조건 맞춰야 함(특화된 운영체제)
- Soft realtime system(연성 실시간 시스템) - Deadline은 있지만 치명적인 결과를 불러일으키지 않음
💡 지금의 운영체제는 다중 작업, 다중 사용자, 시분할 방식으로 운영되고 있음!
운영체제 관련 용어 정리
1. Multitasking
- 컴퓨터에서 여러 작업이 동시에 진행되는 것
-> CPU에서는 매 순간은 하나의 작업이 실행되는데 그것을 짧은 시간마다 나누어서 할당을 하므로 동시에 진행되는 것처럼 보임
2. Multiprogramming
- 여러 프로그램이 메모리에 동시에 올라가 있음 -> 메모리 강조
3. Time Sharing
- CPU 시간을 분할하여 나누어 쓴다는 것 -> CPU 강조
-> 위의 세 개 용어는 운영체제가 제공해주는 기능들임
4. Multiprocessor
- processor - 처리기, 보통 CPU
- 하나의 컴퓨터에 CPU가 여러 개 붙어있음을 뜻함
컴퓨터 시스템의 구조
- 컴퓨터 내부 구조
- 메모리의 한 부분이 명령을 실행하면 해당되는 기계어가 CPU에서 실행하고 실행된 기계어에 의해 메모리의 한 부분에 CPU가 넘어가게 됨 -> 모든 하드웨어적인 관리는 운영체제의 대행을 통해서 이루어짐 즉, CPU를 넘기는 일을 하는 것이 운영체제라고 생각하면 됨
- I/O 디바이스
- 화면에서 뭔가를 출력하고 키보드나 마우스로 요청함
- 디스크에서 실행됨
운영체제의 기능
1. CPU 스케줄링
- 어떤 프로그램에게 CPU 사용권을 줄지 결정, CPU가 짧은 시간 동안에 여러 프로그램에게 시간을 할당하는 방법
2. 메모리 관리
- 한정된 메모리를 어떻게 쪼개어 쓸지 결정
3. 디스크 스케줄링
- 디스크에 들어온 요청을 효율성에 따라 순서를 처리하는 방법, 즉 사용할 데이터가 여러 개의 디스크에 저장되어 있을 경우, 데이터를 사용하기 위해 디스크 헤드를 움직이는 경로를 정하는 방법
- 예) 엘리베이터 스케줄링이랑 같다고 생각하면 됨 -> 1층을 누른 사람이 있고 100층을 누른 사람이 있으면 100층까지 가기까지 100층만 가는 것이 아니라 그 중간에 버튼을 누른 사람까지 엘리베이터에 태워감
4. 인터럽트, 캐싱
- 빠른 CPU와 느린 I/O 장치 간의 속도 차이를 극복하는 것을 결정함
- 인터럽트 - 가로채기, 즉 I/O 컨트롤러가 요청한 일을 다했다는 것을 알려주기 위한 방법
- 캐싱 - CPU와 디스크 간의 거리를 이용해서 속도 차이를 고려하여 복제된 데이터를 통해 효율적으로 관리함 즉, 똑같은 데이터를 또 요청할 경우를 대비해 메모리에 복제본을 둠
프로세스의 상태
⬇️ 컴퓨터 실행 과정
1. 컴퓨터에 전원을 키면 부팅이 일어남 -> 운영체제인 커널이 메모리에 올라와서 상주하면서 실행이 됨 ( 컴퓨터가 꺼지기 전까지 항상 실행됨)
2. 메모리에 올라와 있는 프로세서들이 차례대로 주어진 할당시간 동안에 실행함
3. 중간에 I/O 요청을 할 경우
-> 여기서 CPU는 외부장치인 디스크에 직접 접근 할 수 없음
💡 그러므로 CPU가 직접 파일을 읽어오는 것이 아니라 운영체제에게 CPU 권한을 넘겨서 I/O를 담당하는 작은 CPU인 I/O controller에게 요청하고 작은 메모리에 요청한 파일을 담아서 가져옴 -> CPU가 그에 대한 응답을 받으면 그동안 프로세서가 사용했던 CPU 권한을 다시 운영체제로 넘기고 파일을 작은 메모리에서 자신의 메모리로 가져옴 (이 부분이 인터럽트)
'Computer Science > OS' 카테고리의 다른 글
[운영체제] 운영체제는 무슨 일을 할까? (컴퓨터 구조와 관련지어) (0) | 2024.06.12 |
---|---|
[운영체제] 컴퓨터 시스템의 구조와 시스템 콜, Interrupt (0) | 2024.05.14 |
[운영체제] 스케줄링의 종류 (0) | 2024.05.09 |