운영체제는 컴퓨터가 작동할 수 있게 도와주는 가장 기본적인 프로그램이다.
운영체제를 학습한다는 건 하드웨어를 소프트웨어적으로 어떻게 관리하는가에 대해 학습하는 것이라고 볼 수 있다.
운영체제는 '커널'을 포함한 하나의 프로그램이며, 메모리에 적재되어 실행된다
(메모리에 적재되는 전용 영역 존재<커널 영역>)
커널 - 운영 체제의 심장, 컴퓨터 하드웨어와 사용자 프로그램을 연결해주는 소프트웨어.
커널의 주 역할 : 프로세스 관리(1), 메모리 관리 (2) , 파일 시스템 관리 (3) , 입출력 관리 (4)
1. 프로세스 관리
- 커널은 프로세스들의 생성, 스케줄링, 종료 등 관리
- 여러 프로그램들이 실행될 때 공정하게 cpu를 나눠쓰게 만든다
2. 메모리 관리
- 여러 프로그램들이 동시에 메모리를 사용할 때, 커널은 프로그램이 사용하는 메모리의 영역을 정리하고 프로그램끼리 메모리를 침범하지 못하게 돕는다
- 필요시 가상 메모리를 사용해 메모리가 부족할때에도 프로그램이 멈추지 않게 지원
3. 파일 시스템 관리
*폴더 : 디렉터리의 윈도우 버전 이름
*파일 시스템
데이터를 '파일' 단위로 정리하고, 폴더(디렉터리)를 이용해 체계적으로 관리하는 방식
- 데이터를 파일이라는 형태로 저장
- 파일에 이름, 생성일, 크기, 위치 등의 메타데이터 부여
- 파일을 폴더에 넣어 체계적으로 관리
- 파일을 읽고 쓰는 방식 정의
- 사용자가 파일을 검색, 추가, 삭제, 수정할 수 있도록 지원
- 하드디스크, SSD 드으이 저장 장치와 직접 통신도 커널이 작업
4. 입출력 관리
- 입출력 장치 관리 (키보드, 마우스 등)
- 드라이버를 통해 표준화 된 방법으로 프로그램에게 제공
[운영체제의 자원 관리 방법]
자원 할당 및 관리
- cpu 관리
- 메모리 관리
- 파일 디렉터리 관리
운영 체제는 'cpu 스케줄링'을 통해 실행중인 모든 프로그램이 공정하고 합리적으로 cpu를 할당받도록 관리해야한다.
'스케줄링 알고리즘'을 학습하여 프로그램이 어떤 순서로 cpu를 할당받아야하는지 고민하는 과정이 필요하다.
*대부분의 운영 체제는 가상 메모리를 사용하여 메모리 관리 기법을 효율적으로 수행
[운영 체제의 파일 디렉터리 관리]
운영체제는 파일 시스템을 통해 정보들을 관리한다.
*운영 체제가 관리하는 자원 : cpu, 메모리, 보조 기억 장치, 입출력 장치, 캐시메모리 등
[프로세스 및 스레드 관리]
프로세스 : 어떤 일을 처리하는 과정이나 순서를 뜻하며, 실행중인 프로그램을 관리하고 자원을 할당하는 것
스레드 : 프로세스 내에서의 실행 단위
* 자원 할당과 실행 순서 제어에서 '동기화'와 '교착 상태' 해결이 중요
- 교착 상태(deadlock) : 두개 이상의 작업이 서로의 작업이 끝나기만을 기다리고, 결과적으로 아무것도 완료되지 못하는 상태
*운영 체제의 핵심 기능과 시스템 콜
- 사용자 응용 프로그램은 cpu관리, 메모리 관리, 파일 변경 등의 작업 임의 수행 불가
- > 운영체제의 핵심 기능을 요청해야한다(시스템 콜)
- 시스템 콜 : 운영체제에 기능을 요청하는 '소프트웨어 인터럽트'의 일종으로 정의
[시스템 콜과 cpu 모드의 이해]
시스템 콜은 호출 가능한 함수의 형태를 가지며, 운영 체제에 따라 그 종류와 개수가 다양하다.
- 계층 구조-
프로세스 : 시스템 콜인 포크를 통해 새로운 자식 프로세스 생성 -> 이 프로세스는 또 다른 프로세스를 생성하여 계층 구조 형성.
시스템 콜 호출 시 cpu는 커널모드에서 사용자 모드로 전환되며, 운영 체제 코드를 실행하는 과정에서 두 모드를 구분하여 실행한다.
(응용 프로그램은 600번 이상의 시스템 콜을 호출하며, 각 시스템 콜은 커널 영역과 사용자 영역을 오가며 실행)
! 시스템 콜은 인터럽트를 보낼 수 있는 소프트웨어적인 함수 형태로 존재한다.
*시스템 콜의 처리 과정
- 시스템 콜 호출
- 소프트웨어 인터럽트 발생
- cpu : 커널 모드로 전환
- 운영 체제의 코드 실행
- cpu : 사용자 모드로 재전환
(커널 모드에서는 운영 체제의 명령어를 실행할 수 있지만, 사용자 모드에서는 자원 접근이나 파일 삭제와 같은 운영 체제의 명령어를 실행할 수 없다)
'CS' 카테고리의 다른 글
프로세스와 스레드 (운영체제) (0) | 2025.05.04 |
---|---|
보조기억장치, 입출력장치 (0) | 2025.04.21 |
메모리 (0) | 2025.04.16 |
CPU - 성능 개선 (0) | 2025.04.06 |
CPU-인터럽트 (0) | 2025.04.02 |