Beruflich Dokumente
Kultur Dokumente
인천대학교 컴퓨터공학과
성미영
mailto:mysung@incheon.ac.kr
http://marvel.incheon.ac.kr/~mysung
• 교과목 개요
– 운영체제는 컴퓨터 사용자와 컴퓨터 하드웨어 사이에서 사용자가
보다 편리하게 컴퓨터를 이용할 수 있도록 도와주는 프로그램이다 .
본 교과목에서는 운영체제의 기본 개념에 대하여 전반적으로
이해하며 실제 시스템을 분석해 봄으로써 새로운 운영체제 및 응용
시스템을 설계하는 기초 능력을 배양한다 .
• 수업 목표
– 프로세스 및 병행 프로세스 관리 , 기억장치 관리 , 보호와 보안 등의
운영체제 기본 개념을 이해한다 .
– 분산 시스템을 위해 지원해야 할 프로세스간의 동기 및 통신
메커니즘에 대해 이해한다 .
– Unix/Linux 등의 실제 시스템을 분석하여 운영체제 및 응용 시스템
설계에 응용할 수 있게 한다 .
Chapter 7 교착 상태 (Deadlock)
Chapter 14 보호 (Protection)
Part 5 보호와 보안 (Protection and Security)
Chapter 15 보안 (Security)
• OS 란
– 사용자의 응용 소프트웨어와 하드웨어와의 interface 역할을 하는
프로그램으로서 컴퓨터 시스템을 효율적으로 사용하는 환경제공
– 하드웨어를 제어하는 소프트웨어 (S/W that controls H/W)
S/W 또는 firmware (ROM, PROM, EEPROM, flash memory
안에 내장된 micro code program) 형태
내장형 OS(Embedded OS), SoC(System-on-Chip)
– ( 예 ) MS-DOS, OS/2, Windows, Windows/NT, Windows 2003,
Windows XP, Windows Vista, Multics, Unix, Linux, Solaris 10, Mach,
OS/MVS(Multiple Virtual Storage, IBM), VM/CMS (Virtual
Machine / Conversational Monitoring System IBM),
OpenVMS(Virtual Memory [operating] System on VAX and Alpha
by DEC, Compaq bought DEC, HP bought Compaq,), Mac OS, ...
• OS 의 관점
– 사용자 관점 : 서비스 제공자 (service provider)
– 시스템 관점 : 자원 할당자 / 관리자 (resource allocator/manager)
• OS 의 정의
– 제어 프로그램 (control program): 컴퓨터의 부적절한 사용을
방지하기 위해 사용자 프로그램의 수행을 제어
– 일반적인 정의 = 커널 (kernel): 항상 실행되는 프로그램
• OS 의 주 목적
– 컴퓨터 시스템을 편리하게 이용
– 컴퓨터 하드웨어를 효율적으로 활용
• 운영체제는 컴퓨터 시스템에서 가장 ? ? ? 부분
• Java
– Run on any machine supporting JVM (Java virtual machine)
– Java programs tested using Java 1.4 JVM
• 사용자
– People, machines, other computers
• Event (interrupt)
– H/W generated interrupt (I/O 완료 event) ->
signal to the CPU
– S/W generated interrupt (trap) -> system call
(monitor call)
• OS 는 interrupt-driven 이다
• 메모리에 부트 프로그램 적재
• MBR(Master Boot Record) 에서 부트 프로그램 ( 부트로
더 ) 을 읽어들여 메모리로 적재
• 부트로더로 제어권을 넘겨줌
• 부트로더 : LILO, GRUB, ppcboot, uboot
• GRUB: /boot/grub
•커널 이미지 로딩 및 수행
– GRUB 으로 해당 커널 이미지를 로딩
– 압축 이미지 해제
– 커널로 제어권이 넘어옴
– 커널이 부팅 시 관련 코드 (Fedora 2.6.29.4)
arch/x86/boot/header.S (bootsect_start)
arch/x86/boot/compressed/head_32.S (startup_32)
arch/x86/boot/compressed/misc.c
(decompress_kernel() )
arch/x86/kernel/head_32.S (startup_32)
init/main.c (start_kernel() )
• start_kernel() 함수
– init/main.c
– 실질적인 리눅스 커널의 엔트리 포인트
– 리눅스 커널의 거의 모든 초기화를 처리하는 방대한 함수
– init 프로세스를 생성하는 init_post() 함수를 호출
start_kernel() 함수의 수행 흐름
운영체제 1.16 인천대학교 컴퓨터공학과 성미영
저장장치 구조 (Storage Structure)
• 기억장치 연산
– Load : main memory-> CPU 의 register
– Store : CPU -> memory
• Von Neumann 구조 (stored program) 의 명령 실행 사이클
– fetch : 명령 -> instruction register
– decode
– execute: 실행 후 결과를 register 에 저장
• Main memory : direct-access storage device
– ① too small
– ② volatile
• Secondary storage
– ① extremely large
– ② permanent
– Hard disk
• Tertiary storage
– ① slower and lower in cost than secondary storate
– ② Backups of disk data
– CD, DVD
volatile
non-volatile
non-volatile
• 입출력 방식
– Interrupt 기반 전송
– DMA 기반 전송
• trap : software interrupt
Synchronous Asynchronous
• 고속 입출력 장치를 위한 기법
• DMA 동작 원리 (p419 참조 )
– device driver 가 DMA controller 의 register 들 setting
출발 주소
목적지 주소
전송 길이
제어 레지스터에 제어 비트 설정하여 I/O 명령
– 끝나면 CPU 에 Interrupt
– 메모리는 한 순간에 하나의 워드만 전송 가능
cycle stealing: DMA 제어기가 기억장치 사이클을 훔침
디스크 제어기가 각
바이트를 DMA 제어기로
보낸다 .
one chip
상주 모니터
Loader
Job sequencing
Control card interpreter
• Spooling
– job pool 제공 , direct access
job scheduling 이 가능 multiprogramming 이 가능
– (Cf.) sequential access device : FCFS (First-come First-Served) only
• Job scheduling
– job pool 에 있는 job 중에서 실행을 위해 주기억 장치로 읽어 들임
– 다음 수행할 job 을 결정하는 작업
• Multiprogramming
– 여러 개의 프로그램을 동시에 주기억장치에 넣고 CPU 를 분할 사용하여
CPU 이용율을 높이는 기법
– OS 지원 필요
I/O routine 제공
주기억장치 관리
CPU scheduling
Device 할당
• CPU scheduling
– 주기억 장치 안의 준비 상태인 job 중에서 실행할 job 을 선택하는 작업
• 다중 일괄처리 시스템의 단점
– User 는 job 이 실행되는 동안 interact 할 수 없음
• 시분할 기법 (1960 년대 ~)
– Multiprogramming 의 확장 ( 빈번하게 교대 ) 대화식 (interactive)
– interactive 하려면 응답시간 (response time) 이 짧아야 함 (1 초 이내 )
– CPU 시간을 아주 짧게 나누어 interact 할 수 있게 함
• 시분할 운영체제를 구현하는 기법들
– 가상 기억장치 (virtual memory)
– 파일 시스템 (file system) 사용자가 data 를 편리하게 이용
– 디스크 관리 (disk management)
– 병행 수행 (concurrent execution) 을 위한 CPU scheduling
– 실행 순서 제어위한 작업사이의 동기화와 통신 (job synchronization and
communication)
– 교착상태 (deadlock) 처리
• Time-sharing = CPU Scheduling + Multiprogramming
• OS 중심주제
– Multiprogramming
– Time-sharing
• Interrupt 처리 절차
1. 하던 일 중단 : return address 저장
Return address 의 저장
memory 특정위치에 : 초기 컴퓨터
system stack 에 : 최근 컴퓨터
2. Interrupt 종류 확인
polling ( 인터럽트 요청 신호만 전달 , 단일 회선 인터럽트 요청 )
vectored interrupt ( 하드웨어적으로 확인 : 인터럽트를 요청한 장치의 주소 전달 ,
다중 회선 인터럽트 요청 )
3. 해당 interrupt 의 service routine 으로 제어 이동 후 실행 완료
Interrupt vector: 장치번호로 인덱스된 포인터들의 배열 (a table of pointers
indexed by a unique device number)
4. 하던 일 다시 시작 : return address 부터 실행
Interrupt/fault
monitor user
set user mode
• 작업의 단위
• OS 의 파일 시스템 관리
– 파일은 통상 디렉토리로 구성
– 다수 사용자가 파일에 접근할 때는 누구에 의해 , 어떤 방법으로
접근될 수 있는지의 제어가 바람직
– 파일 관리 활동
파일과 디렉토리 생성 및 제거
파일과 디렉토리 조작을 위한 프리미티브 제공
파일을 보조저장장치로 사상
안전한 (non-volatile) 저장장치에 백업
• OS 의 대용량 저장장치 관리 활동
– 자유공간 (free-space) 관리
– 저장장치 할당
– 디스크 스케줄링
• 3차 저장장치 (tertiary storage)
– optical storage(CD, DVD), magnetic tape
– WORM (write-once, read-many-times), RW (read-write) 형식 등 다양
– 백업용 , 시스템 성능에 영향을 주지 않으나 여전히 OS 의 관리 필요
(mount, umount, allocation, deallocation, etc.)
• I/O subsystem 구성
– buffering ( 전송되는 데이터를 일시적으로 저장 ), caching ( 성능을
위해 데이터의 일부를 빠른 기억장치에 저장 ), spooling ( 한 작업의
출력을 다른 작업의 입력과 중복 ) 을 포함한 메모리 관리 구성 요소
– 일반적인 장치 드라이버 인터페이스
– 특정 하드웨어 장치들을 위한 드라이버
• 다중처리 (multiprocessing) 의 구분
– 대칭적 다중처리 (symmetric multiprocessing; SMP)
각 Processor 가 OS 를 가짐 ( 동등한 관계 )
대부분의 현대 OS 에서 지원
SunOS Version5 (Solaris 2.x)
– 비대칭적 다중처리 (asymmetric multiprocessing)
master processor 가 각 processor 에게 특정한 일을 시킴
매우 큰 시스템에서 지원
SunOS Version4 (Solaris 1.x)
– 실시간 OS 수행
선점 , 우선순위 기반의 실시간 CPU 스케줄링
선점형 커널
지연시간 최소화
d2 d3 d4 d5 d6
넓은 의미의 분산 시스템의 한 형태
똑똑한 PC 로 덤 터미널 (Dumb terminals) 대체
많은 시스템들이 clients 의 요구에 응답하는 서버 시스템으로 동작
Compute-server 시스템 : client 의 서비스를 요청을 받아
처리하고 결과를 다시 돌려줄 수 있는 인터페이스 제공 (i.e.
database)
File-server 시스템 : client 가 파일을 create/update/read/delete
할 수 있는 인터페이스 제공 (i.e. web hard disk server)
서버의 부하가 단점
• 또 다른 넓은 의미 분산 시스템 모델
• P2P 는 client 와 server 구분 없음
– 대신 모든 노드가 동등한 동료
– client 나 server, 또는 두 가지 모두 역할
– 노드는 반드시 P2P network 에 join 해야 함
각 노드는 네트워크의 central lookup service 에 자신의
서비스를 등록하거나 (Napster)
한 peer 는 client 자격으로 원하는 서비스를 제공하는 노드를
찿기 위해 broadcasting 하면 해당 서비스를 제공하는 노드가
응답 : discovery protocol (Gnutella)
– ( 예 ) 1990 년 후반의 file-sharing 서비스들 : Napster, Gnutella
• 저작권 관리가 문제
• Windows 95
기반이었던 client-side 운영체제가 client 와 server
역할을 동시 지원할 수 있는 Linux, Windows XP, 등으로 진화
노력 자신
노력한 것의 ? 만 돌아온다
그러니까 ? 배 열심히 해야
어차피 해야 한다면 ???? 하자
( 로버트 풀검 )
류시화 잠언시집 - [ 지금 알고 있는 걸 그때도 알았더라면 ] 시집 중
자주 그리고 많이 웃는 것
현명한 이에게 존경을 받고
아이들에게서 사랑을 받는 것
정직한 비평가의 찬사를 듣고
친구의 배반을 참아 내는 것
아름다움을 식별할 줄 알며
다른 사람에게서 최선의 것을 발견하는 것
건강한 아이를 낳든
한 뙈기의 정원을 가꾸든
사회 환경을 개선하든
자기가 태어나기 전보다
세상을 조금이라도 살기 좋은 곳으로
만들어 놓고 떠나는 것
자신이 한때 이곳에 살았음으로 해서
단 한 사람의 인생이라도 행복해지는 것
이것이 진정한 성공이다 .
( 랄프 왈도 에머슨 )
류시화 잠언시집 - [ 지금 알고 있는 걸 그때도 알았더라면 ] 시집 중
1.76 인천대학교 컴퓨터공학과 성미영
일찍 일어나는 새
당신이 새라면
아침에 일찍 일어나야 한다 .
그래야 벌레를 잡아먹을 수 있을 테니까 .
만일 당신이 새라면
아침에 일찍 일어나라 .
하지만 만일
당신이 벌레라면
아주 늦게 일어나야 하겠지 .
( 쉘 실버스타인 )
류시화 잠언시집 - [ 지금 알고 있는 걸 그때도 알았더라면 ] 시집 중