운영체제 11강
장치 관리와 입출력 시스템
✅ 장치의 개념
- 입출력 장치(I/O devices)는 프로세스 실행 시 데이터 입출력에 사용
- CPU, 메모리 외: 디스크, 키보드, 마우스, 프린터, 네트워크 카드 등
● 장치 종류
- 전용장치: 하나의 프로세스에만 할당 (예: 프린터)
- 공유장치: 여러 프로세스에 동시에 할당 가능 (예: 디스크)
- 가상장치: 공용장치를 전용처럼 보이게 함 (예: 스풀링 프린터)
✅ 장치 구성
- 장치제어기(Controller): 장치를 직접 제어하는 하드웨어
- 장치드라이버(Driver): 운영체제와 장치제어기 사이 소프트웨어 인터페이스
- 운영체제가 입출력 명령을 장치제어기가 이해할 수 있는 형태로 전달
✅ 메모리 매핑 입출력
- 장치제어기의 레지스터를 메모리 공간에 매핑
- CPU는 메모리 접근처럼 I/O 장치를 제어
✅ 입출력 처리 방식
● 1. 프로그램 방식
- CPU가 장치 상태를 직접 반복 확인하며 입출력 처리 (Polling)
● 2. 인터럽트 방식
- 장치가 입출력 가능 상태가 되면 인터럽트 신호 발생
- CPU는 인터럽트를 받아 입출력 처리
● 3. DMA (Direct Memory Access)
- CPU를 거치지 않고, DMA 제어기가 메모리와 I/O 장치 간 데이터를 직접 전송
- CPU는 명령만 내리고, 데이터 이동은 DMA가 수행
- 데이터 전송 완료 후 인터럽트로 CPU에 알림
✅ 입출력 최적화 기법
● 버퍼링(Buffering)
- I/O 장치와 프로세스 간 속도 차이를 보완
- 중간 버퍼를 통해 병렬 처리 가능
● 스풀링(Spooling)
- 데이터를 디스크에 임시 저장 후 출력
- 출력 장치를 전용처럼 사용 가능 (예: 인쇄 작업 큐)
✅ 요약
- 장치 관리의 핵심은 하드웨어 제어, 입출력 방식, 최적화 기법
- 프로그램/인터럽트/DMA 방식으로 입출력 처리
- 효율적 입출력을 위한 버퍼링, 스풀링 사용
운영체제 12강
저장장치 종류, 디스크 스케줄링, 파일 관리
✅ 저장장치의 종류
● 자기 디스크 (Hard Disk)
- 자기 성질을 띤 디스크 표면에 데이터를 기록
- 구성: 플래터, 트랙, 섹터, 실린더
- 헤드 암이 트랙 이동, 섹터에서 읽기/쓰기
● 광 디스크 (Optical Disk)
- 레이저 반사 이용 (예: CD-ROM, DVD, 블루레이)
- 하나의 나선형 트랙
● 플래시 메모리 (SSD 등)
- 비휘발성, 고속, 저전력
- 자기 디스크보다 빠르나 가격이 높고 수명 짧음
✅ 디스크 스케줄링 알고리즘
- 목표: 탐색시간(헤드 이동), 회전지연시간 최소화
● FCFS (First-Come First-Serve)
- 도착 순서대로 처리 → 공평하나 평균 응답시간 김
● SSTF (Shortest Seek Time First)
- 현재 위치에서 가장 가까운 요청부터 처리
- Belady 현상 없음, 기아 상태 가능
● SCAN (엘리베이터 알고리즘)
- 한 방향으로 진행하다 끝에서 방향 전환
- 끝 트랙은 한 번만 처리됨
● C-SCAN (Circular SCAN)
- 한 방향으로만 이동하고 끝에서 다시 시작점으로 이동
- 응답 시간 편차 최소화, 기아 방지
● LOOK / C-LOOK
- SCAN/C-SCAN 최적화, 요청 있는 트랙까지만 이동
✅ 파일 시스템 개요
- 파일: 저장된 데이터 집합
- 파일 시스템: 파일을 저장하고 관리하는 OS의 핵심 구성
● 기능
- 접근/보호
- 저장 공간 할당
- 데이터 무결성 보장
✅ 파일의 저장 방식
● 순차 파일
- 논리적 순서 = 물리적 순서
- 테이프 등 순차 접근 매체에 적합
● 인덱스 순차 파일
- 키 기반 논리 순서, 주요 레코드 주소를 인덱스로 관리
- 순차/직접 접근 모두 가능
● 직접 파일
- 키 → 물리 주소로 직접 매핑
- 해시 함수 등으로 구현
✅ 공간 할당 방식
● 연속 할당
- 연속된 블록에 파일 저장
- 빠른 접근, 외부 단편화 발생, 파일 확장 어려움
● 연결 할당
- 블록 단위로 저장, 포인터로 연결
- 단편화 해결, 랜덤 접근 비효율
✅ 요약
- 저장장치는 자기 디스크, 광 디스크, 플래시 메모리 등
- 디스크 스케줄링은 FCFS, SSTF, SCAN, C-SCAN 등 존재
- 파일은 순차, 인덱스, 직접 방식으로 저장 가능
- 공간 할당은 연속/연결 방식으로 이루어짐
운영체제 13강
분산 운영체제 개요
✅ 분산 운영체제란?
- 네트워크로 연결된 여러 대의 컴퓨터가 단일 시스템처럼 동작하게 만드는 운영체제
- 자원 공유, 병렬 처리, 고장 허용, 투명성 제공 등
✅ 분산 운영체제의 특징
● 자원 공유
- 네트워크를 통해 프린터, 저장장치 등 공유
- 예: 1000대 컴퓨터가 각각 256GB 저장장치를 공유
● 병렬 처리
- 작업을 여러 프로세서에 나눠 병렬 수행
- 다수의 클라이언트 요청을 여러 서버가 처리
● 고장 허용성
- 일부 컴퓨터에 장애가 발생해도 다른 컴퓨터가 대체 수행
- 중복된 하드웨어/데이터 구성으로 신뢰성 확보
● 투명성
- 사용자에게는 하나의 시스템처럼 보임
- 파일 이동, 자원 접근 등이 자동화됨
✅ 네트워크 구조
| 구조 | 특징 | 장단점 |
|---|
| 완전연결 | 모든 노드 직접 연결 | 신뢰성↑, 비용↑ |
| 트리형 | 계층적 연결 | 고장에 민감 |
| 스타형 | 중심 노드 중심 | 중심 고장 시 전체 연결 끊김 |
| 링형 | 이웃과만 연결 | 일부 고장 시 분리 위험 |
| 버스형 | 공유 버스 연결 | 버스 고장 시 전체 중단 |
✅ 자원 투명성
- 로컬/원격 자원의 구분 없이 접근 가능
- 운영체제가 자동으로 처리
- 종류:
- 데이터 이주: 데이터를 원격지로 가져옴
- 계산 이주: 연산을 원격에서 수행
- 프로세스 이주: 전체 프로세스를 원격지로 이동
✅ 분산 파일 시스템
- host:local_name 형식으로 파일 식별
- 원격 디렉터리를 로컬 디렉터리에 마운트 가능
mount -t nfs 10.10.10.10:/backups /var/backups
✅ 분산 메모리
- 원격 메모리 접근 또는 분산 공유 메모리
- 주소 형식: <(net#, host#, port#), block, offset>
● 장점
- 확장성 우수
- 복잡한 데이터 처리에 유리
- 큰 가상 메모리 공간 제공
● 단점
- 느린 접근 속도
- 보호 메커니즘 필요
- 직접 제어 어려움
✅ 원격 프로시저 호출 (RPC)
- 로컬처럼 보이지만, 원격 서버에서 함수 실행
- 스텁(stub)이 네트워크 메시지 생성/전송 처리
● 특징
- 호출/응답은 메시지 형태
- 메모리 주소 반환 불가능 (다른 주소 공간이기 때문)
- 수신자는 유사한 환경에서 실행되어야 함
● RPC 동작 흐름 요약
- 클라이언트가 원격 함수 호출
- 스텁이 메시지 포장 및 전송
- 서버 수신 → 함수 실행 → 결과 전송
- 클라이언트 스텁이 응답 수신 및 반환
✅ 요약
- 분산 운영체제는 여러 시스템을 하나처럼 사용하게 해줌
- 자원 공유, 병렬 처리, 고장 허용성, 투명성 등이 핵심
- 분산 파일/메모리 시스템, RPC 등의 기술로 구현됨
운영체제 14강
운영체제 보안
✅ 운영체제 보안 개요
- 자원의 독립성과 안전한 공유 보장
- 각 프로세스의 영역 보호
- 인증/암호화를 통해 합법적 사용만 허용
- 시스템 신뢰성과 무결성 보장
✅ 보안의 3요소
| 요소 | 설명 |
|---|
| 기밀성 | 허가되지 않은 접근 방지 (정보 유출 방지) |
| 무결성 | 정보가 불법적으로 변경되지 않도록 보장 |
| 가용성 | 합법적인 사용자는 언제든지 자원을 사용할 수 있어야 함 |
✅ 보안 침해 예시
- 권한 도용, 비인가 접근 (기밀성 침해)
- 데이터 변경/삽입 (무결성 침해)
- 시스템 파괴, 서비스 불가 (가용성 침해)
✅ 악성 코드 유형
| 유형 | 설명 |
|---|
| 트로이 목마 | 사용자 권한으로 시스템 침투 |
| 백도어 | 인증절차 없이 우회 접근 허용 |
| 은밀 채널 | 비인가된 경로로 데이터 교환 |
| 웜 | 자기 복제로 전파 |
| 바이러스 | 다른 프로그램 감염 후 전파 |
✅ 보안 정책과 메커니즘
- 보안 정책: 무엇을 어떻게 보호할지에 대한 기준 (접근제어, 최소권한 등)
- 보안 메커니즘: 보호 방법 (암호화, 인증, 등급 관리 등)
✅ 접근 제어
- 주체(사용자)가 객체(자원)를 어떤 방식으로 접근할지 결정
- 식별: ID 등으로 사용자 구별
- 인증: 사용자 신원 확인
✅ 접근 제어 방식
● 능력 기반 (DAC)
- 자원 소유자가 권한 부여
- 자원 공유 중심, 유연하나 추적 어려움
● 강제 접근 제어 (MAC)
- 등급 기반 제어 (주체/객체 등급 비교)
- 보안 정책 강제 적용, 공유 어려움
● 역할 기반 (RBAC)
- 역할에 따라 권한 부여
- 제약, 역할 계층, 세션 개념 포함
✅ 최소 권한 원칙 & 감사
- 최소 권한: 임무 수행에 필요한 권한만 부여
- 감사(Audit): 이벤트 기록 및 추적
- 로그 변조 방지 → 접근제어 및 암호화 사용
✅ 보안 기능 구현 방법
● 사용자 식별 및 인증
● 접근 제어
- 접근제어 리스트(ACL), 유닉스 권한 체계 등
● 보안등급 관리
- 사용자/자원에 등급 부여, 로그 암호화 저장
- 관리자 권한 세분화
✅ 운영체제 수준 보호 방법
● 모드 분리
- 사용자 모드 / 커널 모드
- 특권 명령은 커널 모드에서만 실행
● 메모리 보호
● CPU 보호
● I/O 보호
✅ 암호 기법
| 방식 | 특징 |
|---|
| 대칭키 | 하나의 비밀키로 암호화/복호화, 속도 빠름 |
| 공개키 | 공개키로 암호화, 개인키로 복호화 |
| 전자서명 | 공개키 기반 인증 |
✅ 운영체제 보안 모델
● 참조 모니터
● 보안 커널
- 참조 모니터 포함, 핵심 보안 기능 포함한 커널 영역
✅ 보안 모델 예시
● BLP 모델 (Bell-LaPadula)
- 기밀성 중심
- "읽기는 낮게, 쓰기는 높게" → 정보 유출 방지
● Biba 모델
- 무결성 중심
- "읽기는 높게, 쓰기는 낮게" → 데이터 오염 방지
✅ 요약
- 보안의 핵심은 기밀성, 무결성, 가용성 보장
- 침입 방지 위해 정책/메커니즘 구분하여 적용
- 운영체제는 접근제어, 모드 구분, 암호화 등으로 보호
- 보안 모델(BLP, Biba)로 정책을 시스템에 적용
운영체제 15강
운영체제 응용 및 최신 동향 (Linux, Windows, Android 등)
✅ MINIX
- 교육용 소형 운영체제
- 마이크로커널 구조 기반
- 소스코드 공개 → 필요 없는 부분 제거 가능
- 리눅스 개발에 영감 제공
✅ Linux
- 대부분 C 언어로 작성되어 이식성 뛰어남
- 모듈화 구조: 커널 교체 없이 기능 추가 가능
- IPC 기능: 세마포어, 메시지 큐, 공유 메모리 등
- 파일 시스템 지원: ext4, FAT, NTFS, HPFS 등
- 무료, 오픈소스, 많은 사용자와 개발자 생태계
- 최신 동향을 빠르게 반영
- 실시간 시스템 대응 가능 (제약 있음)
● 임베디드 시스템에서의 Linux
- 센서, 제어기 등을 통한 정보 수집/처리
- 소용량 메모리 환경 → OS 크기 최소화 필요
- 저성능 CPU 환경 → 성능 최적화 필수
- 경성/연성 실시간 시스템 대응 필요
| 구분 | 설명 |
|---|
| 경성 실시간 | 반드시 마감시간 내 작업 완수 (예: 항공 제어, 심박동기) |
| 연성 실시간 | 마감시간 내 수행이 바람직하지만 실패해도 허용 (예: 동영상 재생) |
✅ Windows
- Win32 API, POSIX, OS/2 등 지원
- 사용자 친화성과 보안, 신뢰성 결합 (NT 기반)
- 커널 모드 구성요소:
- I/O 관리자, 보안 참조 모니터, GDI, LPC, 가상 메모리, 객체 관리자 등
- 사용자 모드: Win32, OS/2, POSIX 하위 시스템 운영
● 특징
- NT API가 커널/사용자 모드를 연결
- 자원 접근 여부 및 보안 처리
- 모든 자원을 객체로 간주
- 프로세스 간 정보교환 및 자원 관리 구조화
✅ Android
- 저전력, 무선 연결, 터치 중심 인터페이스
- 고수준 UI + 저수준 OS의 결합 형태
- Java 기반, 다양한 하드웨어에 이식 가능
- 기기별 파편화 이슈 존재
● 성능 처리 방식
- 설치 시 중간 코드 → 기계어 변환 수행 (AOT 컴파일)
- 이후 실행 시 변환된 코드 재사용
- 설치 시간이 오래 걸리지만 실행 성능은 향상
✅ 요약
- 운영체제는 다양한 응용 환경에 적합하게 진화 중
- Linux: 모듈화, 오픈소스, 임베디드/실시간 대응
- Windows: NT 기반 구조, 보안/신뢰성 강화
- Android: 모바일 친화, 파편화 이슈 및 AOT 컴파일 방식 채택