운영체제 기초
1. 운영체제의 개념과 역할
- 운영체제(OS)의 정의
- 컴퓨터 하드웨어와 응용 프로그램 사이에서 자원을 효율적으로 관리하는 소프트웨어
- 사용자와 하드웨어 간의 인터페이스 역할 수행
- 주요 역할
- 프로세스, 메모리, 파일, 입출력 장치 등 시스템 자원 관리
- 시스템의 안정성과 효율성 보장
2. 프로세스 관리
- 프로세스와 스레드
- 프로세스: 실행 중인 프로그램으로, 독립적인 메모리 공간을 가짐
- 스레드: 프로세스 내에서 실행되는 작업 단위, 같은 프로세스 내 여러 스레드는 메모리 공간을 공유
- 프로세스 상태
- 생성, 준비, 실행, 대기, 종료 상태로 구분되며, 각 상태 전환 과정을 통해 프로세스가 운영됨
- 스케줄링
- CPU 할당을 위한 알고리즘: FCFS(선입선출), SJF(최단 작업 우선), 우선순위, 라운드 로빈 등이 있음
- 각 알고리즘은 작업의 종류와 시스템 환경에 따라 장단점이 있음
3. 메모리 관리
- 주기억장치와 보조기억장치
- 주기억장치: RAM, 휘발성 메모리로서 프로세스가 실행되는 동안 데이터를 저장
- 보조기억장치: HDD, SSD 등 비휘발성 저장 장치로 데이터를 영구 보관
- 메모리 할당 방식
- 연속 할당: 단순하지만 외부 단편화 문제 발생
- 비연속 할당: 페이징과 세그멘테이션 기법을 통해 메모리 효율성 증대
- 가상 메모리
- 실제 메모리보다 큰 주소 공간을 제공하여, 디스크의 일부를 메모리처럼 사용하는 기술
- 페이지 교체 알고리즘(예: LRU, FIFO)을 통해 효율적인 메모리 활용
4. 파일 시스템
- 파일의 개념과 관리
- 데이터를 논리적 단위(파일)로 관리하며, 디렉토리 구조를 통해 조직화
- 파일 접근 권한 및 보안을 위한 관리 필요
- 파일 시스템의 종류
- FAT, NTFS, ext4 등 각 운영체제에 맞는 파일 시스템이 존재
- 각 시스템은 성능, 안정성, 보안 측면에서 차이가 있음
- 파일 입출력
- 파일 생성, 읽기, 쓰기, 삭제 등의 기본 작업 수행
- 버퍼링, 캐싱 등 성능 최적화 기법도 학습 필요
5. 입출력 장치와 장치 관리
- I/O 장치 관리
- 다양한 입출력 장치(키보드, 마우스, 프린터, 네트워크 장비 등)를 효율적으로 제어
- 장치 드라이버를 통해 하드웨어와 소프트웨어 간 통신을 담당
- 입출력 방식
- 인터럽트 기반, DMA(Direct Memory Access) 등 하드웨어 효율성을 높이는 방식 적용
6. 동시성 제어와 데드락
- 동기화 문제
- 여러 프로세스나 스레드가 동시에 공유 자원에 접근할 때 발생하는 문제 해결
- 뮤텍스, 세마포어, 모니터 등의 기법을 사용하여 충돌 방지
- 데드락(Deadlock)
- 두 개 이상의 프로세스가 서로 자원을 기다리며 무한 대기 상태에 빠지는 현상
- 예방, 회피, 탐지 및 회복 기법으로 관리
7. 보안과 접근 제어
- 사용자 인증 및 권한 관리
- 시스템 자원에 대한 접근을 제어하여, 무단 접근이나 악의적 행위를 방지
- 파일 권한 설정, 암호화, 방화벽 등 다양한 보안 기법 적용