[운영체제/OS] 1. 운영체제(Operating System) 개요
1. 운영체제의 정의와 필요성
1.1 운영체제란?
- 정의: A. Silberschatz에 따르면, “운영체제는 사용자와 하드웨어 간의 중개프로그램이다.”
- 역할: 컴퓨터 하드웨어와 애플리케이션 사이의 추상화 계층을 제공하여 사용자와 하드웨어 간의 효율적인 상호작용을 가능하게 함
1.2 운영체제 학습의 필요성
- 새로운 하드웨어 운영을 위해
- 기능의 추가, 수정 및 개선을 위해
- 시스템 성능 조정을 위해
1.3 운영체제의 주요 목표
- 자원의 효율적 사용 (Efficient Use of Resources)
- 성능에 영향을 미치는 병목현상(bottlenecks) 방지
- 모든 구성 요소의 최대한 활용
- 사용자 편의성과 생산성 (Convenience and Productivity for Users)
- 사용자 비용이 기계보다 중요
- 기능을 최대한 효율적으로 제공
- 가용성과 신뢰성 (Availability and Reliability)
- 컴퓨터 시스템의 중요성
- 시스템 실패가 기업의 실패로 이어질 수 있음
2. 현대 컴퓨팅 패러다임
2.1 컴퓨팅의 종류
- 전통적 컴퓨팅 (Traditional computing)
- 수치 계산 중심
- 웹 기반 컴퓨팅 (Web-based computing)
- 정보 처리 중심
- 임베디드 컴퓨팅 (Embedded computing)
- 특정 목적의 하드웨어/소프트웨어 시스템
- 예: 휴대용 모바일 기기
- 제한된 메모리
- 저속 프로세서
- 작은 디스플레이
- 배터리 의존성
3. 하드웨어 보호와 이중 모드 동작
3.1 하드웨어 보호 메커니즘
- 잘못된 프로그램이 다른 프로그램의 실행에 영향을 주지 않도록 보장
- 이중 모드 메커니즘을 통한 시스템 보호
3.2 이중 모드 동작 (Dual-Mode Operation)
- 사용자 모드 (User Mode)
- 사용자를 대신하여 실행되는 작업
- 커널 모드 (Kernel Mode)
- 운영체제를 대신하여 실행되는 작업
- 별칭: supervisor mode, system mode, monitor mode
3.3 모드 전환
- 보호된 프로세서 레지스터의 status bit로 모드 설정
- Intel 80x86의 경우:
- 4가지 실행 상태 존재
- CPL(Current Privilege Level) 2비트 필드 사용
- UNIX 커널: User Mode와 Kernel Mode만 사용
- 특권 명령어(Privileged Instructions)
- 특정 기계어 명령은 보호된 특권 명령어로 지정
- 커널 모드에서만 실행 가능
- 시스템 보호를 위한 핵심 메커니즘
3.4 모드 전환이 발생하는 경우
- 하드웨어 인터럽트 (Hardware Interrupt)
- 소프트웨어 인터럽트 (Software interrupt/exception)
- 시스템 콜 (System call)
4. 운영체제 서비스
4.1 사용자 서비스
- 프로그램 실행
- 메모리에 프로그램을 로드하고 실행하는 기능
- 입출력 작업
- I/O 작업 수행을 위한 중개
- 파일 시스템 조작
- 파일의 읽기, 쓰기, 생성, 삭제 기능
- 통신
- 프로세스 간 정보 교환
- 동일 컴퓨터 또는 네트워크로 연결된 다른 시스템 간 통신
- 오류 감지
- CPU, 메모리, I/O 장치, 사용자 프로그램의 오류 감지
4.2 시스템 서비스
- 자원 할당
- 다중 사용자/작업 환경에서의 자원 할당
- 계정 관리
- 사용자의 자원 사용 추적 및 기록
- 보호
- 시스템 자원에 대한 접근 제어
5. 시스템 콜 인터페이스
5.1 시스템 콜(System Calls)의 개념
- 실행 중인 프로그램과 운영체제 간의 인터페이스
- 함수 호출 형태로 제공
5.2 시스템 콜 원칙
- 애플리케이션과 하드웨어 사이의 추상화 계층 제공
- 장점:
- 프로그래밍 용이성
- 시스템 보안 향상
- 프로그램 이식성 증가
6. POSIX API와 시스템 콜
6.1 API (Application Programming Interface)
- 특정 서비스를 얻기 위한 함수 정의
- 예: POSIX APIs (malloc(), calloc(), free())
- libc에서 구현되며 brk() 시스템 콜 사용
6.2 시스템 콜 특징
- 소프트웨어 인터럽트를 통한 커널 요청
- 구현:
- 사용자 공간의 libc에서 래퍼 함수로 구현
- 정수값 반환 (실패 시 -1 반환 및 errno 설정)
7. 시스템 프로그램
7.1 시스템 프로그램의 개념
- 프로그램 개발과 실행을 위한 편리한 환경 제공
- 대부분의 사용자는 실제 시스템 콜이 아닌 시스템 프로그램을 통해 운영체제를 경험
7.2 시스템 프로그램의 분류
- 파일 조작 프로그램
- UNIX의 셸 명령어
- 생성, 삭제, 복사, 이름변경, 출력, 덤프, 목록 등
- 상태 정보 프로그램
- date, df, du, top 등
- 시스템 상태 및 성능 모니터링
- 파일 수정 프로그램
- 텍스트 편집기
- 프로그래밍 언어 지원
- 컴파일러
- 어셈블러
- 인터프리터
- 프로그램 로딩 및 실행
- 로더
- 링키지 에디터
- 디버거
- 응용 프로그램
- DBMS
- 웹 브라우저
- 워드 프로세서
- 게임
- 그래픽 도구
8. 운영체제 설계
8.1 설계 목표
- 사용자 관점
- 편리성, 학습 용이성, 신뢰성, 안전성, 속도
- 시스템 관점
- 설계/구현/유지보수 용이성
- 유연성, 신뢰성, error-free, 효율성
8.2 메커니즘과 정책
- 메커니즘: 작업 수행 방법
- 정책: 수행할 작업 결정
- 예시:
- 메커니즘: time slicing in time-sharing system
- 정책: time quantum
8.3 계층화 접근법
- 장점:
- 모듈성
- 디버깅과 시스템 검증 용이
- 단점:
- 계층 정의의 어려움
- 성능 저하 가능성
9. 마이크로커널
9.1 모놀리식 커널 vs 마이크로커널
- 모놀리식 커널(Monolithic Kernel)
- 모든 OS 서비스가 하나의 큰 커널에 구현
- 모든 프로시저 간 호출 가능
- 마이크로커널(Microkernel)
- 핵심 OS 기능만 커널에 포함
- 나머지 서비스는 사용자 모드에서 실행
그림: 모놀리식 커널과 마이크로커널의 구조 비교 (출처: Wikipedia)
9.2 마이크로커널의 특징
- 장점:
- 확장성, 모듈성
- 작은 커널로 디버깅 용이
- 효율적인 유지보수
- 단점:
- 성능 저하 (모드/프로세스 전환 필요)
10. 가상 머신
10.1 가상 머신의 필요성
- 네트워크 컴퓨팅에서의 이식성
- CPU 혁신의 제약 해결
- 보안 강화
- OS 개발 및 디버깅 용이성
10.2 가상 머신의 종류
- 프로세스 VM
- 개별 프로세스 가상화
- ABI 에뮬레이션
- 시스템 VM
- 전체 시스템 가상화
- 전체 ISA 에뮬레이션
10.3 시스템 VM 구현 방식
- Hosted 방식
- 기존 OS 위에서 프로세스로 실행
- 예: VMWare Workstation, VirtualBox
- Stand-alone 방식
-
하드웨어 직접 제어
-
예: VMWare ESX, IBM z/VM
-
11. Linux
11.1 Linux의 특징
- UNIX 계열 OS
- 오픈 소스 (GPL 라이선스)
- 높은 이식성
- 효율성과 안정성
11.2 Linux의 주요 기능
- 모놀리식 커널 구조
- 복잡하지만 고성능
- 모듈 지원
- 동적 커널 코드 로딩/언로딩
- 커널 스레딩
- 제한적인 커널 스레드 사용
- 선점형 커널
- 2.6 버전부터 지원
- 다중 프로세서 지원
- SMP 지원
참고 자료
- A. Silberschatz의 운영체제 개론
- Linux 커널 문서 (www.kernel.org)
댓글남기기