운영체제#1 운영체제를 알아야하는 이유

성찬홍·2025년 11월 28일

Computer Science

목록 보기
11/17
post-thumbnail

1.운영체제란?

운영체제는 실행할 프로그램에 필요한 자원을 할당하고 프로그램이 올바르게 실행되도록 돕는 특별한 프로그램이다.

컴퓨터 하드웨어와 소프트웨어를 관리하고, 사용자와 컴퓨터 사이를 중재하는 핵심 프로그램이다. 쉽게 말해 컴퓨터를 켜서 사용할 수 있게 만드는 가장 기본적인 소프트웨어라고 보면 된다.

1) 자원 관리(Resource Management)

컴퓨터에는 CPU, 메모리, 저장장치, 입출력 장치 등이 있는데, 운영체제는 이 자원들을 효율적으로 나눠 쓰도록 관리한다.

  • 어떤 프로그램에 CPU를 먼저 줄지 결정
  • 메모리를 필요한 만큼 배분
  • 디스크에 파일을 안전하게 저장
  • 프린터, 키보드, 네트워크 등 I/O 담당
  • 프로그램 실행에 있어 마!
    땅히 필요한 요소
  • 프로그램의 네 가지 핵심 부품 포함

→ 운영체제는 커널 영역에 적재되는 프로그램입니다.

Tip) 응용 프로그램 : 사용자가 특정 목적을 위해 사용하는 일반적인 프로그램

& 운영체제의 메모리 관리

& 운영체제의 CPU 관리

+) 입출력장치 ,보조기억장치도 운영체제가 관리해준다.

2) 사용자(응용 프로그램)와 하드웨어 사이의 중개자

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

3) 프로그램 실행 환경 제공

운영체제는 프로그램이 실행될 수 있는 기반을 제공한다.

  • 프로세스 관리
  • 스레드 관리
  • 메모리 관리
  • 파일 시스템 제공
  • 보안, 권한 관리

그래서 우리가 운영체제를 왜 알아야하는가?

  • 프로그램을 위한 프로그램이기 때문에 , 프로그램을 만드는 개발자는 운영체제의 원리를 알아야한다.

운영체제의 큰 그림

커널

: 운영체제의 핵심 서비스를 담당하는 부분

→ 운영체제의 심장이다.

운영체제에는 속하는데 커널에는 속하지 않는 기능?

  • 유저 인터페이스
    • 사용자와 컴퓨터 간의 통로일 뿐 운영체제의 핵심 기능은 아니다.

이중모드와 시스템 호출

사용자가 실행하는 프로그램은 자원에 직접 접근할 수 있을까?

→ 안된다.

  • 운영체제는 응용 프로그램들이 자원에 접근하려 할 때 오직 자신을 통해서만 접근하도록 하여 자원을 보호한다.

ex ) 응용 프로그램이 하드 디스크에 접근할때 ?

이중모드

  • CPU가 명령어를 실행하는 모드를 크게 사용자 모드와 커널 모드로 구분하는 방식
    • CPU가 실행하는 권한 수준(Privilege Level) 을 구분해 놓은 개념
  • 사용자 모드
    • 운영체제 서비스를 제공받을 수 없는 실행 모드
    • 커널 영역의 코드를 실행할 수 없는 실행 모드
    • 자원 접근 불가
    • 사용자 모드는 제한된 권한으로 실행된다
  • 커널 모드
    • 운영체제의 서비스를 제공받을 수 있는 실행 모드
    • 자원 접근을 비록한 모든 명령어 실행 가능
    • 커널 모드는 모든 하드웨어 자원을 직접 제어할 수 있는 모드

시스템 호출

  • 커널 모드로 전환하여 실행하기 위해 호출
  • 일종의 소프트웨어 인터럽트

사용자 모드 → 커널 모드 전환 (System Call)

  1. 사용자 프로그램이 “파일을 읽어줘!” 요청
  2. 시스템 호출 호출
  3. CPU가 커널 모드로 전환
  4. 커널이 파일 읽기 처리
  5. 작업 완료 후 다시 사용자 모드로 돌아감
구분사용자 모드커널 모드
권한제한됨무제한
실행 주체앱, 사용자 프로그램운영체제 커널
위험한 명령 실행불가가능
자원 접근직접 접근 불가직접 접근 가능
잘못 실행 시 영향해당 프로그램만 오류시스템 전체 다운 가능

리눅스에서 자주 사용되는 시스템 호출

프로세스 관리(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.

운영체제의 핵심 서비스 3가지

  • 프로세스 관리
  • 자원 접근 및 할당
  • 파일 시스템 관리

프로세스 관리

→ 동시다발적으로 생성/실행/삭제되는 다양한 프로세스를 일목요연하게 관리

  • 프로세스 == 실행 중인 프로그램
  • 수많은 프로세스들이 동시에 실행

자원 접근 및 할당

  • CPU
    • CPU 스케쥴링 : 어떤 프로세스를 먼저, 얼마나 오래 실행할까?
  • 메모리
    • 페이징 , 스와핑 등등
  • 입출력장치
    • 관련된 정보를 파일이라는 단위로 저장 장치에 보관
    • 파일들을 묶어 폴더(디렉터리) 단위로 저장 장치에 보관

정리

운영체제는 컴퓨터를 켤 때 가장 먼저 실행되어 CPU, 메모리, 저장장치 같은 하드웨어 자원을 적절히 배분하고 프로그램이 올바르게 동작하도록 돕는 핵심 소프트웨어이다. 사용자가 “파일 열기”, “인터넷 실행” 같은 명령을 내리면 운영체제가 이를 받아 하드웨어 명령으로 바꿔 실행해주기 때문에, 사용자는 하드웨어 구조를 몰라도 컴퓨터를 쉽게 사용할 수 있다. 또한 운영체제는 프로세스 및 스레드 관리, 메모리 관리, 파일 시스템 운영, 보안 및 권한 제어 등 프로그램 실행에 필요한 기반 환경 전체를 제공한다.

운영체제의 핵심 부분인 커널은 CPU와 메모리를 포함한 모든 자원을 직접 제어할 수 있는 권한을 가진 영역이며, 프로그램들은 이 자원에 직접 접근하지 못하고 반드시 시스템 호출(System Call)을 통해 접근한다. 이를 위해 CPU는 사용자 모드와 커널 모드의 두 가지 실행 권한을 구분하며, 시스템 호출을 통해 사용자 모드에서 커널 모드로 전환되어 파일 읽기, 프로세스 생성 같은 중요한 작업이 수행된다. 이렇게 운영체제는 프로세스 관리, 자원 관리, 파일 시스템 관리라는 핵심 서비스를 제공하면서 전체 시스템이 안정적으로 동작하도록 보장한다.

출처

https://www.inflearn.com/course/%ED%98%BC%EC%9E%90-%EA%B3%B5%EB%B6%80%ED%95%98%EB%8A%94-%EC%BB%B4%ED%93%A8%ED%84%B0%EA%B5%AC%EC%A1%B0-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C/dashboard

profile
꾸준한 개발자

0개의 댓글