1. 운영체제의 개념
컴퓨터의 하드웨어 자원을 관리하고, 사용자 및 응용 프로그램이 컴퓨터와 상호작용할 수 있도록 지원하는 소프트웨어의 집합이라고 정의할 수 있습니다. 기본적으로, 운영체제는 컴퓨터 시스템의 자원을 효율적으로 관리하고, 사용자 및 다른 소프트웨어와의 상호작용을 가능하게 하여, 사용자가 소프트웨어를 더 쉽게 사용할 수 있게 돕습니다. 운영체제의 주요 목표는 시스템의 성능을 최적화하면서, 사용자에게 편리한 인터페이스를 제공하는 것입니다.
- 커널(Kernel):커널은 운영체제의 핵심 부분으로, 시스템의 모든 기본적인 작업을 관리합니다. 하드웨어와 소프트웨어 사이의 통신을 담당하며, 메모리 관리, 프로세스 관리, 파일 시스템 관리, 장치 드라이버 관리 등 다양한 중요한 기능을 수행합니다. 커널은 시스템의 안정성과 보안을 유지하는 데 필수적인 역할을 하며, 사용자와 직접적인 상호작용을 하지 않고 백그라운드에서 실행됩니다.
- 시스템 호출(System Call):응용 프로그램이 OS의 서비스를 요청할 때 사용하는 인터페이스입니다. 예: 파일 열기, 프로세스 생성 등.
2. 운영체제의 핵심 서비스
- 프로세스 관리: 실행 중인 프로그램(프로세스)을 생성/종료하고 CPU 할당을 관리합니다.
- 메모리 관리: 프로세스에 적절한 메모리를 할당/해제합니다.
- 파일 시스템 관리: 파일의 생성, 삭제, 읽기, 쓰기 등을 관리합니다.
- 입출력 관리: 키보드, 디스크, 프린터 등과 같은 장치와 통신합니다.
- 보안 및 사용자 관리: 사용자 인증, 권한 제어 등을 수행합니다.
3. 프로세스 이해
- 프로세스(Process): 실행 중인 프로그램. 코드, 데이터, 스택, 힙 메모리로 구성됩니다.
- 프로세스 상태: 생성 → 준비 → 실행 → 대기 → 종료.
- 컨텍스트(Context): CPU가 실행 중인 프로세스의 상태 정보(레지스터 값 등).
스레드(Thread)
- 프로세스 내에서 실행되는 작은 단위.
- 하나의 프로세스 안에 여러 개의 스레드가 존재 가능 (멀티스레딩).
- 스레드는 코드, 데이터, 힙을 공유하고, 각자 스택과 PC(프로그램 카운터)를 가집니다.