
1.운영체제란?
운영체제는 실행할 프로그램에 필요한 자원을 할당하고 프로그램이 올바르게 실행되도록 돕는 특별한 프로그램이다.
컴퓨터 하드웨어와 소프트웨어를 관리하고, 사용자와 컴퓨터 사이를 중재하는 핵심 프로그램이다. 쉽게 말해 컴퓨터를 켜서 사용할 수 있게 만드는 가장 기본적인 소프트웨어라고 보면 된다.
컴퓨터에는 CPU, 메모리, 저장장치, 입출력 장치 등이 있는데, 운영체제는 이 자원들을 효율적으로 나눠 쓰도록 관리한다.
→ 운영체제는 커널 영역에 적재되는 프로그램입니다.
Tip) 응용 프로그램 : 사용자가 특정 목적을 위해 사용하는 일반적인 프로그램

& 운영체제의 메모리 관리

& 운영체제의 CPU 관리

+) 입출력장치 ,보조기억장치도 운영체제가 관리해준다.
사용자가 "파일 열기", "인터넷 열기" 같은 명령을 내리면,
운영체제가 내부적으로 복잡한 하드웨어 동작을 처리해준다.
→ 사용자는 하드웨어 지식 없이 쉽게 컴퓨터를 사용할 수 있음.

운영체제는 프로그램이 실행될 수 있는 기반을 제공한다.
운영체제의 큰 그림
: 운영체제의 핵심 서비스를 담당하는 부분
→ 운영체제의 심장이다.

운영체제에는 속하는데 커널에는 속하지 않는 기능?
사용자가 실행하는 프로그램은 자원에 직접 접근할 수 있을까?
→ 안된다.
ex ) 응용 프로그램이 하드 디스크에 접근할때 ?


사용자 모드 → 커널 모드 전환 (System Call)
| 구분 | 사용자 모드 | 커널 모드 |
|---|---|---|
| 권한 | 제한됨 | 무제한 |
| 실행 주체 | 앱, 사용자 프로그램 | 운영체제 커널 |
| 위험한 명령 실행 | 불가 | 가능 |
| 자원 접근 | 직접 접근 불가 | 직접 접근 가능 |
| 잘못 실행 시 영향 | 해당 프로그램만 오류 | 시스템 전체 다운 가능 |
프로세스 관리(Process Management)
| 시스템 콜 | 설명 |
|---|---|
| fork() | 자식 프로세스를 생성한다 (부모 복제). |
| execve() | 현재 프로세스를 새로운 프로그램으로 덮어씀. |
| clone() | 쓰레드·컨테이너 생성(리눅스 전용 고급 fork). |
| wait() / waitpid() | 자식 프로세스 종료를 기다림. |
| exit() | 현재 프로세스 종료. |
| getpid() / getppid() | PID, PPID 가져오기. |
| kill() | 프로세스에 시그널 보내기. |
파일 시스템(File I/O)
| 시스템 콜 | 설명 |
|---|---|
| open() | 파일 열기. |
| read() | 파일/장치에서 읽기. |
| write() | 파일/장치에 쓰기. |
| close() | 파일 디스크립터 닫기. |
| lseek() | 파일 offset 이동. |
| stat() / fstat() | 파일 정보 얻기. |
| mkdir() / rmdir() | 디렉토리 생성·삭제. |
| unlink() | 파일 삭제. |
메모리 관리(Memory Management)
| 시스템 콜 | 설명 |
|---|---|
| brk() | 힙 영역 크기 조절(구식). |
| mmap() | 파일/메모리를 메모리 영역에 매핑. |
| munmap() | mmap 해제. |
| mprotect() | 메모리 보호 권한 변경. |
입출력/장치 I/O (I/O Control)
| 시스템 콜 | 설명 |
|---|---|
| ioctl() | 장치 제어(키보드, 터미널 등). |
| select() / poll() / epoll() | 다중 I/O 처리(동시 소켓 관리). |
| readv() / writev() | 벡터 I/O. |
→ 동시다발적으로 생성/실행/삭제되는 다양한 프로세스를 일목요연하게 관리
정리
운영체제는 컴퓨터를 켤 때 가장 먼저 실행되어 CPU, 메모리, 저장장치 같은 하드웨어 자원을 적절히 배분하고 프로그램이 올바르게 동작하도록 돕는 핵심 소프트웨어이다. 사용자가 “파일 열기”, “인터넷 실행” 같은 명령을 내리면 운영체제가 이를 받아 하드웨어 명령으로 바꿔 실행해주기 때문에, 사용자는 하드웨어 구조를 몰라도 컴퓨터를 쉽게 사용할 수 있다. 또한 운영체제는 프로세스 및 스레드 관리, 메모리 관리, 파일 시스템 운영, 보안 및 권한 제어 등 프로그램 실행에 필요한 기반 환경 전체를 제공한다.
운영체제의 핵심 부분인 커널은 CPU와 메모리를 포함한 모든 자원을 직접 제어할 수 있는 권한을 가진 영역이며, 프로그램들은 이 자원에 직접 접근하지 못하고 반드시 시스템 호출(System Call)을 통해 접근한다. 이를 위해 CPU는 사용자 모드와 커널 모드의 두 가지 실행 권한을 구분하며, 시스템 호출을 통해 사용자 모드에서 커널 모드로 전환되어 파일 읽기, 프로세스 생성 같은 중요한 작업이 수행된다. 이렇게 운영체제는 프로세스 관리, 자원 관리, 파일 시스템 관리라는 핵심 서비스를 제공하면서 전체 시스템이 안정적으로 동작하도록 보장한다.
출처