[Operating System] 운영체제 개요
소프트웨어는 프로그램을 포함하는 더 넓은 개념으로, 프로그램은 시작점이 되는 EntryPoint가 있어 혼자서도 실행될 수 있지만, 소프트웨어는 시작점이 없을 수 있다.
운영체제는 소프트웨어로 단순한 프로그램이 아니라 여러 프로그램, 드라이버, 라이브러리 등 다양한 구성 요소를 포함하는 소프트웨어의 집합이다.
운영체제는 하드웨어와 소프트웨어 사이에 위치해 사용자와 컴퓨터 간 인터페이스를 제공하는 시스템 소프트웨어이다.
운영체제는 컴퓨터의 리소스에 접근하고 관리해 사용자에게 여러 편리한 추상화를 제공한다.
저장소에 파일이 어떤 구조로 저장되어있고, 어떤 위치에 저장되어있는지 사용자가 알지 못해도 운영체제가 알아서 처리해주고, CPU 메모리 등 리소스의 사용량을 지속적으로 모니터링해 기록한다.
Process Management / Memory Management / Process Scheduleing 등 핵심 기능을 담당하는 모듈로 구성되고, 각 모듈들은 컴퓨터가 제대로 동작할 수 있도록 돕는다.
컴퓨터의 전원을 연결하는 작업을 부팅이라고 부르는데, 부팅 시 SSD/HDD에 저장되어있는 운영체제를 메모리로 옮겨 컴퓨터 시스템을 사용할 수 있는 상태로 만든다.
메모리는 한정되어있으니 현재 실행 중인 리소스만 메모리에 로드하고, 나머지는 SDD/HDD 등 저장 장치에 저장한다.
부팅하지 않으면 메모리에는 아무것도 올라와 있지 않지만, 부팅 시 저장 장치에 있는 운영체제를 메모리에 올린다.
저장 장치에 저장된 운영체제는 원본으로 전체 시스템 파일을 저장하고 있지만, 메모리에는 운영체제의 핵심 기능을 모아둔 커널이 로드된다.
운영체제 개념이 정착하기 전에 나온 컴퓨터인 애니악을 구동하기 위해서는 현대의 운영체제가 하는 역할을 사람이 기계를 일일이 조작하며 수행했어야 했다.
이를 해결하기 위해 운영체제의 초기 형태인 모니터가 도입됐다. (1960)
여러 프로그램을 저장소에 저장하고, 컴퓨터는 모니터를 실행해 각 작업을 순서대로 실행하는 방식으로 동작한다.
이 배치 시스템 덕분에 사람이 직접 기계를 조작해야 하는 번거로움이 사라졌다.
Uniprogrammin은 메모리에 프로그램을 하나만 로드하고 실행하는 방식이다.
메모리에 프로그램을 하나만 로드하고 실행하는 경우 CPU를 제대로 활용할 수 없다.
프로그램의 입출력 시간은 실제로 프로그램을 실행하는 시간보다 훨씬 더 오래 걸리는데, 프로그램 하나만 실행하는 경우 입출력을 기다리는 시간이 길어진다.
Multiprogramming에서는 메모리에 여러 프로그램을 로드하고 각 프로그램을 순차적으로 실행하는 방식이다.
메모리에 여러 프로그램을 로드하고 각 입출력 시간에 다른 작업을 처리하도록 하면 CPU를 좀 더 효율적으로 사용할 수 있지만, 그 만큼 메모리에 공간이 많아야 하고 유휴 시간에 차등적으로 다른 작업을 실행하도록 지시하는 Process Scheduling 작업도 함께 수행되어야 한다.
Process Scheduling 작업을 효과적으로 수행하기 위해 Time Sharing System이 도입됐다.
CPU를 여러 프로그램에게 일정한 간격(100millisecond)으로 분배해서 실행하는 방식으로, 실제로는 그렇지 않지만 각 프로그램들이 마치 동시에 실행되는 것 처럼 느껴진다.
대량의 데이터를 처리하거나 수행 시간이 오래 걸리는 서버 작업인 경우 경우 Multiprogramming을, GUI 멀티태스킹이 필요하거나 여러 사용자가 하나의 시스템을 공유해서 사용하는 경우 Time Sharing System을 사용한다.
실제 단위시간당 마무리하게 되는 작업의 수를 의미하는 Throughput은 Multiprogramming이 Time Sharing System 보다 더 높다.
cmd에서 & (ampersand) 인자를 전달하면 백그라운드로 실행되는데, 이 경우 프로세스는 바로 Ready 상태에 가지 않고 New 상태에 위치하다가 CPU가 여유로울 때 작업을 처리한다.
운영체제가 지능화되면서 사용자는 interactive 방식으로 실행했지만 운영체제가 해당 작업이 Multiprogramming이 더 효과적이라고 판단할 때가 있는데.. 이 부분은 스케쥴러가 그렇게 동작하도록 설계된 부분이라고 생각하자.
현대 컴퓨터의 CPU에는 여러 개의 코어가 내장되어 있어, 운영체제는 Symmetric Multiprocessing 방식을 사용해 여러 CPU를 동시에 제어한다.
각 CPU 코어는 하나의 운영체제를 공유해서 사용하고 각 CPU가 동일한 메모리와 I/O 장치를 사용한다.
특정 코어가 마스터 역할을 수행하지 않고 모든 CPU가 균등하게 작업을 수행해 코어간 부하를 분배해 효과적이다.
여러 CPU 코어를 관리할 때도 운영체제는 하나만 사용되고, 운영체제는 전체 프로세스를 파악하고 CPU에게 데이터를 할당하는 역할을 수행한다.
운영체제는 CPU 및 메모리 관리, 파일 및 입출력 시스템 관리, 저장소 관리, 보안, 네트워킹, 명령 해석 등 다양한 기능을 제공한다.
각 기능은 다른 전공과목을 수강하면서 확인하고.. Command Interpreter System에 대해 살펴보자.
사용자가 입력한 명령어를 해석하고 운영체제가 실행할 수 있도록 전달하는 프로그램으로, 사용자가 CLI를 통해 ls / mkdir 등 명령어를 입력하거나 GUI를 통해 특정 명령을 내리면 해당 명령어를 해석한다.
사용자의 요구사항을 수행하기 위해 프로그램도 운영체제에게 명령을 내려야 하는데, 이 때 System Call을 사용한다.
응용 프로그램이 직접 하드웨어에 접근할 수는 없으니, 운영체제에게 하드웨어 관련 특정 작업을 요청한다고 생각하자.
객체지향 개념처럼.. 시스템 자원은 운영체제로부터 캡슐화되고, 정해진 System Call을 사용해서 운영체제 기능을 사용할 수 있도록 제한되어있다.
'Computer Science > Operating System' 카테고리의 다른 글
[Operating System] 프로세스와 동시성 제어 (0) | 2025.03.28 |
---|---|
[Operating System] Process Termination / Thread (0) | 2025.03.19 |
[Operating System] Process (Context, Creation, Switch) (0) | 2025.03.17 |
[Operating System] 커널 구조와 프로세스 (0) | 2025.03.12 |
[Ubuntu] 셸 스크립트 프로그래밍 (0) | 2023.09.11 |
댓글
이 글 공유하기
다른 글
-
[Operating System] Process Termination / Thread
[Operating System] Process Termination / Thread
2025.03.19 -
[Operating System] Process (Context, Creation, Switch)
[Operating System] Process (Context, Creation, Switch)
2025.03.17 -
[Operating System] 커널 구조와 프로세스
[Operating System] 커널 구조와 프로세스
2025.03.12 -
[Ubuntu] 셸 스크립트 프로그래밍
[Ubuntu] 셸 스크립트 프로그래밍
2023.09.11