UNIX Unbounded A Beginning Approach

Slides:



Advertisements
Similar presentations
컴퓨터와 인터넷.
Advertisements

Linux Seminar Cahpter 10. Linux File System
UNIX 운영 체제의 설계 - Chapter 4. 파일의 내부 표현
컴퓨터 운영체제의 역사 손용범.
2. 파일 시스템 파일 디렉터리와 경로명 파일 시스템의 구조 새로운 파일 생성 소유권과 허가 파일 유형과 일반화.
김태원 심재일 김상래 강신택. 김태원 심재일 김상래 강신택 인터넷 통신망의 정보를 제공하는 서비스 인터넷의 자원 및 정보는 NIC가 관리 IP주소 또는 도메인으로 정보 검색 이용자 및 통신망 관한 정보를 제공.
Image & Video processing
인공지능실험실 석사 2학기 이희재 TCP/IP Socket Programming… 제 11장 프로세스간 통신 인공지능실험실 석사 2학기 이희재
1. Windows Server 2003의 역사 개인용 Windows의 발전 과정
뇌를 자극하는 Windows Server 2012 R2
08. 디바이스 드라이버의 읽기와 쓰기 김진홍
운영체제 4장 요약정리(CPU 스케줄링) 2A 박훈.
리눅스 커널의 이해 중에서 1장. 소개 이원구 네트워크 실험실.
Windows Server 장. 사고를 대비한 데이터 백업.
UNIT 07 Memory Map 로봇 SW 교육원 조용수.
강 명 수 LINUX 설치 강 명 수
Linux서버를 이용한 채팅프로그램 지도 교수님 : 이형원 교수님 이 름 : 이 은 영 학 번 :
양방향 파이프의 활용 양방향 통신 파이프는 기본적으로 단방향이므로 양방향 통신을 위해서는 파이프를 2개 생성한다.
07. 디바이스 드라이버의 초기화와 종료 김진홍
CHAPTER 02 OpenCV 개요 PART 01 영상 처리 개요 및 OpenCV 소개.
Root Filesystem Porting
Root Filesystem Porting
DK-128 ADC 실습 아이티즌 기술연구소
                              데이터베이스 프로그래밍 (소프트웨어 개발 트랙)                               퍼스널 오라클 9i 인스톨.
메시지 큐[5] – test1.c 메시지 제어: msgctl(2) #include <sys/msg.h>
WinCE Device Driver 실습 #3
WinCE Device Driver 실습 #2
DK-128 실습 EEPROM 제어 아이티즌 기술연구소
4. LAN의 배선체계 (3장. LAN: Local Area Network)
Sungkyunkwan University OS Project Dongkun Shin
03. 병행 프로세스 (Parallel Process)
CHAP 12. 리소스와 보안.
UNIT 07 Memory Map 로봇 SW 교육원 조용수.
리눅스 시스템 & 커널 기초 P.46 – P.53 이름: nsh009 학번: 112 1/20.
Device Driver 임베디드 시스템 I.
뇌를 자극하는 Windows Server 2012 R2
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
제1장 Unix란 무엇인가?.
자바 5.0 프로그래밍.
Tiny OS와 NesC Tiny OS Part1. Won Mi Sun – 17 지능제어 연구실.
DK-128 실습 내부 EEPROM 제어 아이티즌 기술연구소 김태성 연구원
DK-128 실습 타이머카운터 사용법 아이티즌 기술연구소
컴퓨터 시스템 하드웨어 컴퓨터 시스템 소프트웨어 C P U Control Unit 입 력 장 치 출 력 장 치 ALU
Part 4 클래스 라이브러리 Chapter 10 : 다중 스레드 Chapter 11 : 패키지와 주요 클래스
ARM Development Suite v1.2
ATmega128의 특징 아이티즌 기술연구소
네트워크 환경 구축과 이미지 전송 호스트/타겟 통신 직렬 통신을 이용한 이미지 전송 수퍼 데몬 BOOTP 환경 구축
Kernel, Ramdisk, JFFS2 Porting
( Windows Service Application Debugging )
01. 개요 네트워크에 있는 컴퓨터와 그룹에 대한 NetBIOS 이름에 대응되는 IP 주소를 찾아주는 서비스
뇌를 자극하는 Solaris bible.
시스템 인터페이스 Lab#5 쉡 실습.
DK-128 직렬통신 실습 아이티즌 기술연구소
AT MEGA 128 기초와 응용 I 기본적인 구조.
01. 분산 파일 시스템의 개요 네트워크에 분산된 파일을 사용자가 쉽게 접근하고 관리할 수 있게 해준다.
시스템 인터페이스 Lab1 X-window 및 명령어 사용.
멀티미디어시스템 제 5 장. 멀티미디어 데이터베이스 개념 IT응용시스템공학과 김 형 진 교수.
MIDP 네트워크 프로그래밍 ps lab 김윤경.
발표자 : 이지연 Programming Systems Lab.
System Security Operating System.
프로그래밍 언어 학습을 위한 가상실습환경 창원대학교 이수현.
제 4 장 Record.
Installation Guide.
06. 디바이스의 등록과 해제 김진홍
1장 C 언어의 개요 C 언어의 역사와 기원 C 언어의 특징 프로그램 과정 C 프로그램 구조 C 프로그램 예제.
CHAP 15. 데이터 스토리지.
버스와 메모리 전송 버스 시스템 레지스터와 레지스터들 사이의 정보 전송을 위한 경로
시스템 해킹과 보안 permission과 SetUID.
2. 프로세스 B 안우진 - 운영체제 -.
ARP.
Presentation transcript:

UNIX Unbounded A Beginning Approach 이 성 현 Home : nimilx2.hannam.ac.kr E-mail : shlee@netwk.hannam.ac.kr Tel : +82-42-629-7559

목차 운영체제의 기초 개념 유닉스 개요 유닉스 파일 시스템의 개요 유닉스 커널 개요 인터럽트 처리 INODE 프로세스 관리 및 스케쥴 질의 및 응답

운영체제의 기초 개념 = 운영체제의 기본적인 구현 두 가지 하드웨어 구성 요소와 상호 작용하여, 하드웨어 플랫폼에 들어 있는 저수준의 프로그래밍 가능한 모든 요소를 서비스 컴퓨터 시스템에서 동작하는 응용프로그램(또는 사용자 프로그램)을 위한 실행 환경 제공 Nonprivileged mode Privileged mode user mode kernel mode CPU 측면 kernel 측면 =

운영체제의 기초 개념 멀티유저 시스템 정의 요구 사항 두 명 이상의 사용자가 각자 여러 응용 프로그램을 동시에 그리고 서로 독립적으로 실행할 수 있는 컴퓨터 요구 사항 사용자와 신원을 확인할 수 있는 인증 메커니즘 버그가 있는 프로그램이 시스템의 다른 응용프로그램에 대한 실행을 막을 수 있는 메커니즘 악의적인 사용자 프로그램이 다른 사용자의 활동을 방해하거나 염탐하는 것을 막을 수 있는 메커니즘 각 사용자에게 할당되는 자원의 양을 제한할 수 있는 회계(accounting) 메커니즘 각 응용프로그램이 다른 사용자가 실행한 응용프로그램이 어떤 일을 하는지 신경쓰지 않고 자신의 작업을 수행할 수 있음 같은 시간에 여러 응용프로그램이 동작 중인 상태에 있으며, CPU나 메모리, 하드디스크 같은 여러 자원을 사용하기 위해 경쟁

운영체제의 기초 개념 사용자와 그룹 UID(User ID) GID(Group ID) 각 사용자의 개인 영역을 식별하는 고유 번호로 구별 Login Name & Password로 사용자 확인 GID(Group ID) 사용자가 속한 그룹을 식별하는 고유 번호로 구별 시스템상의 각 파일은 하나의 그룹과 연관 각 파일에 대한 사용자 그룹의 권한 설정 superuser(root 또는 supervisor) 시스템 유지 작업을 위한 특별한 사용자 일반적인 보호 메커니즘을 적용하지 않음

운영체제의 기초 개념 프로세스(Process) 정의 프로세스 & 쓰레드 실행상태에 있는 프로그램의 인스턴스(instance) 실행하고 있는 프로그램의 실행 컨텍스트(context) 프로세스 & 쓰레드 CPU 레지스터 값; 프로세스의 총체적이고도 순간적인 상태 프로세스 주소공간 쓰레드 텍스트 컨텍스트 CPU 상태 스택 데이터

운영체제의 기초 개념 커널 커널의 정의 기능 사용자 관점에서의 커널 컴퓨터내의 자원을 사용자 프로그램이 사용할 수 있도록 관리하는 프로그램 기능 프로세스 관리 / 파일시스템 관리 / 메모리 관리 / 네트워크 관리 사용자 관점에서의 커널 User Application Library & Shell System Call Kernel

운영체제의 기초 개념 커널의 기본구조 _ 기능적인 분류 User Programming & System Library CPU, RAM, DISK, CD, Console, Solaris & Parallel port, Network Card, Board specific feature, etc Process Management Architecture Dependency Memory Manager Device Driver (Character, Block) File System Tvoes Networking BSD Socket INET Network Protocol Interface Drivers User Kernel PHYSICAL

Integrated Kernel Architecture Micro Kernel Architecture 운영체제의 기초 개념 커널 구조 Integrated Kernel vs. Micro Kernel System Service API Integrated Kernel Architecture Micro Kernel Architecture Server Security 통합 커널(또는 모놀리틱 커널) 마이크로 커널 각 커널 계층이 하나의 커널 프로그램으로 통합 프로세스를 대신하여 커널 모드에서 동작 수행속도가 빠르나 업그레이드가 어려움 적은 기능을 커널에 요구 마이크로 커널에 메모리 할당, 장치 드라이버, 시스템 콜 핸들러 기능 구현 속도가 느리나, 업그레이드가 쉬움

유닉스 개요 유닉스 계보 Version 6 (1975) (1979) BSD (1977) XENIX (1979 ~) System III (1982) System V.2 (1984) System V.3 (1986) System V.4 (1988) OSF/1 (1992) 4.4 BSD (1993) 4.2 BSD 4.3 BSD (1985) 후속 버전 영향 AT&T Bell 연구소

유닉스 개요 기능상의 유닉스 계보 System V.3 BSD4.4 OSF/1 System V.4 (1982)1 SunOS LINUX DEC Solaris HP-UX 10 AIX IRIX SCO UNIX UNIX 정의 UNIX 구현

유닉스 개요 하드웨어 의존적인 소스 코드와 하드웨어에 무관한 소스코드 분리 유닉스가 지원하는 하드웨어 플랫폼에 해당하는 9개의 서브 디렉토리 존재 arm : Acorn 개인용 컴퓨터 alpha : 컴팩 알파 워크스테이션 i386 : 인텔 80x86이나 IBM 호환 개인용 컴퓨터 m68k : 모토로라 MC680x0 마이크로를 탑재한 개인용 컴퓨터 mips : 실리콘 그래픽스의 MIPS 마이크로프로세서를 사용하는 워크스테이션 ppc : 모토로라 IBM의 파워PC 마이크로프로세서를 사용하는 워크스테이션 sparc : SUN 사의 SPARC 마이크로프로세서를 사용하는 워크스테이션 sparc64 :SUN 사의 Ultra SPARC 마이크로프로세서를 사용하는 워크스테이션 s390 : IBM 시스템/390 메인 프레임

유닉스 개요 UNIX운영체제 설계 철학의 우수성 프로세스의 CPU 경쟁 획득 방식 등 OS/2, Windows NT … 유사 시스템 설계 및 고성능 유닉스 어플리케이션 설계 프로세스 메모리 관리 입출력, 파일 시스템을 위한 메커니즘 커널의 자료구조와 알고리즘

유닉스 파일 시스템의 개요 유닉스에 의해 관리되는 파일 시스템 유닉스 파일 시스템의 특징 정규파일 : 데이터, 코드의 일련의 바이트 포함, 시스템호출에 의해 접근 디렉토리 파일 특수파일 : 프린터, 디스크 등의 장치, 파이프와 소켓 등의 IPC에 사용되도록 연결되는 파일 유닉스 파일 시스템의 특징 바이트의 선형적 연속 기본적으로 유닉스 커널은 레코드, 필드와 같은 고급 수준의 파일 구조를 지원하지 않음

유닉스 파일 시스템의 개요 파일 유닉스 파일은 일련의 바이트로 이루어진 정보를 담는 그릇 트리의 모든 노드(node)는 디렉토리명을 의미 / dev . . . home bin usr fd0

유닉스 파일 시스템의 개요 하드 링크와 소프트 링크 하드 링크 소프트 링크 정의 디렉토리에 있는 파일명을 파일 하드 링크(또는 링크) 하드 링크의 두 가지 제약 디렉토리에 대한 하드링크를 만들 수 없다. 링크는 동일한 파일시스템에 들어 있는 파일 사이에서만 만들 수 있다. 소프트 링크 다른 파일의 임의 경로명을 포함하는 짧은 파일 특성 경로명은 파일시스템 내의 어떠한 파일도 가리킬 수 있으며, 실제로 존재하지 않는 파일을 가리킬 수도 있다.

입출력 장치와 커널에 통합되어 있는 장치 드라이버와 연동 유닉스 파일 시스템의 개요 파일 유형 유닉스 파일 유형 정규 파일 디렉토리(directory) 심볼릭 링크(symbolic link) 블록 장치에 해당하는 장치 파일 문자 장치에 해당하는 장치 파일 파이프(pipe)와 지정 파이프(named pipe : FIFO라고도 함) 소켓(socket) 모든 유닉스 파일시스템의 구성요소 입출력 장치와 커널에 통합되어 있는 장치 드라이버와 연동 프로세스간 통신을 위해 사용하는 특별한 파일

유닉스 파일 시스템의 개요 파일 디스크립터와 아이노드 POSIX 표준에서 규정한 최소한의 속성 제공 유닉스는 파일과 파일 디스크립터를 명확하게 구별 POSIX 표준에서 규정한 최소한의 속성 제공 파일 유형 파일과 연계되어 있는 하드 링크의 수 바이트 단위로 된 파일 길이 장치 ID (즉, 파일을 포함하고 있는 장치의 식별자) 파일시스템에 들어 있는 파일을 구별할 수 있는 아이노드 번호) 파일을 소유하고 있는 사용자의 ID 파일의 그룹 ID 아이노드 상태 관련 시간 기록 접근 권한과 파일 모드

유닉스 파일 시스템의 개요 아이노드 구조 i_dev, i_ino, i_mode, i_nlink i_uid, i_gid i_rdev, i_size i_atime, ctime, mtime … 12 direct block 3 indirect block type (4bit) u g s S_IFSOCK S_IFLNK S_IFIFO

유닉스 파일 시스템의 개요 접근 권한과 파일 모드 파일 사용자의 세 유형 파일 모드를 정의하기 위한 세 플래그 파일을 소유하고 있는 사용자 소유자를 제외하고 파일과 같은 그룹에 속해 있는 사용자 그 밖의 사용자 파일 모드를 정의하기 위한 세 플래그 suid : 어떤 파일을 실행하는 프로세스는 보통 프로세스 소유자의 UID를 갖음 sgid : 어떤 파일을 실행하는 프로세스는 보통 프로세스 그룹의 GID를 갖음 sticky : stick 플래그가 설정된 실행 파일은 실행 후 종료되더라도 메모리에 프로그램을 유지하도록 커널에 요청(현재에는 사용되지 않음)

유닉스 파일 시스템의 개요 파일을 다루는 시스템 콜 파일 열기 파일 닫기 fd = open(path, flag, mode); 열린 파일(open file) 객체를 생성 파일 디스크립터(file descriptor)를 반환 파일 닫기 res = close(fd); //파일 디스크립터의 fd에 해당하는 열린 파일 객체를 해제 새로 생성할 파일의 접근 권한 지정 파일을 어떻게 열 것인지 결정 (읽기, 쓰기, 읽기/쓰기, 추가) 열 파일 경로명(상대/절대 경로)

유닉스 파일 시스템의 개요 파일을 다루는 시스템 콜 열린 파일에 접근하기 파일명 변경과 파일 삭제 lseek() 시스템 콜 newoffset = lseek(fd, offset, whence); read() 시스템 콜 nread = read(fd, buf. count); 파일명 변경과 파일 삭제 res = rename(oldpath, newpath); // 파일 링크 이름을 변경 res = unlink(pathname); // 파일의 링크 횟수를 줄이고, 해당 디렉토리 엔트리를 제거

유닉스 파일 시스템의 개요 system_call 흐름도 system_call restore_all tracesys_exit ret_from_sys_call tracesys badsys ret_with_reschedule restore_all ret_from_intr handle_softirq ret_from_exception reschedule signal_return v86_signal_return

유닉스 커널 개요 커널은 유닉스의 핵심부분을 수행 시스템 ON시 디스크로부터 RAM으로 적재되는 유닉스의 핵심 프로그램 프로세스 사이에 CPU와 RAM을 경쟁하며 공유 시스템 호출 처리 주변 장치 다루기 시스템 ON시 디스크로부터 RAM으로 적재되는 유닉스의 핵심 프로그램 대부분 C언어로 작성(속도에 민감한 일부 부분은 어셈블리로 작성) 사용자 프로그램은 시스템호출 인터페이스를 통해 커널로 접근

유닉스 커널 개요 커널-프로세스와 파일 프로세스 IPC 파일 … I/O

유닉스 커널 개요 커널과 대화 프로세스는 시스템호출을 통해 커널의 기능에 접근 외부 장치는 하드웨어 인터럽트로 커널과 통신 시스템호출, 하드웨어 인터럽트는 외부 세계와 커널이 대화하는 유일한 수단

유닉스 커널 개요 시스템 호출 정합 입/출력 IPC 프로세스관리 커널에 대한 프로그래머의 기능적 인터페이스 프로세스

유닉스 커널 개요 사용자 모드와 커널 모드 사용자 모드 커널 모드 사용자 프로세스로부터 보호되는 커널 메모리공간에 상주 주요 커널 자료구조에 접근할 수 없는 모드 커널 모드 모든 시스템 호출이 실행가능 (시스템 호출을 통해 커널 모드로 진입) 사용자 프로세스로부터 보호되는 커널 메모리공간에 상주 커널이 포함하는 주요 두 자료구조 프로세스 테이블 열린 파일 테이블

유닉스 커널 개요 프로세스와 커널 모드 프로세스 구현 커널 프로세스 커널 주소 공간의 커널 모드에서 실행 사용자와 상호 작용을 하지 않는다. 따라서 터미널 장치가 불필요 일반적으로 시스템을 시작할 때 만들어지고, 시스템을 종료할 때까지 존재 프로세스 구현 프로세스의 실행 중단시, 커널에 의해 프로세스 디스크립터에 저장 프로그램 카운터와 스택 포인터 레지스터 범용 레지스터 부동 소수점 레지스터 프로세서 제어 레지스터 메모리 관리 레지스터

유닉스 커널 개요 사용자 모드와 커널 모드 사이의 전환 사용자 모드 시스템 콜 핸들러 프로세스 1 프로세스 2 커널 모드 스케 줄러 인터럽트

유닉스 커널 개요 프로세스 주소 공간 프로세스는 자신의 주소 공간에서 실행 사용자 모드에서 실행되는 프로세스는 자신만의 스택과 데이터, 코드 영역 사용 재진입이 가능하므로 커널 제어 경로가 실행 주소 공간의 일부를 프로세스 사이에서 공유하는 경우 메모리의 절약을 위해 필요 Ex) 동일 프로그램 사용 공유 메모리 기법 사용 시스템 V 리눅스

유닉스 커널 개요 동기화와 임계 영역 비선점형 커널 인터럽트 금지 세마포어 스핀락 데드락 피하기 프로세스가 실행 중이면 임의 보류나 프로세스 교체를 할 수 없음 인터럽트 금지 프로세스가 임계 영역에 들어가기 전에 모든 하드웨어 인터럽트 금지 프로세스가 임계 영역을 빠져나오면 인터럽트 허용 세마포어 자료 구조와 연계된 간단한 카운터 스핀락 세마포어와 유사하지만 프로세스 목록이 없음 프로세스가 사용하려고 하는 락을 다른 프로세스가 사용하려고 잠그면, 락이 풀릴 때까지 명령어를 실행하며 프로세스가 회전(spin) 데드락 피하기

유닉스 커널 개요 시그널과 프로세스간 통신 정의 리눅스에서 지원하는 프로세스간 통신 프로세스간의 의사 전달 수단 프로세스간에 실행을 동기적으로 맞출 수 있는 방법을 제공 리눅스에서 지원하는 프로세스간 통신 시그널, FIFO, 파이프 소켓 … 네트워크 세마포어, 메시지 큐, 공유메모리 … 시스템 V

Kern_ipc_perm() 함수, flag 반환 유닉스 커널 개요 프로세스간 통신 프로세스 시그널 파이프 FIFO 세마포어 메시지 큐 공유메모리 IPC 방법 = IPC 객체 Kern_ipc_perm() 함수 커널에 의해 생성 key uid gid cuid cgid mode seq Kern_ipc_perm() 함수, flag 반환

sys_rt_signalpromask() 유닉스 커널 개요 유닉스 커널 개요 시그널과 프로세스간 통신 signal 흐름 send_singal() 시그널 핸들러 등록 프로세스 시그널 전송 현 상태 저장 시스템 콜 pending 상태 이전 상태 복원 sys_rt_signalpromask() sys_rt_sigpending() . 시그널 핸들러 masking / unmasking 중단 무시(ignore) core dump

유닉스 커널 개요 메모리 관리 가상메모리 가상 메모리의 단점 메모리 단편화 추상적 메모리 개념으로 메모리 관리 유닛(MMU) 사이에 논리적 계층으로 동작 가상 주소 공간(virtual address space) 개념 가상 메모리의 장점 여러 프로세스를 동시에 실행 물리 메모리보다 더 많은 메모리를 요구하는 응용프로그램 실행 프로그램 코드의 일부분을 메모리에 로드하여 프로세스 실행 각 프로세스가 사용 가능한 물리 메모리의 부분 집합에 접근 가능 프로세스가 라이브러리나 단일 메모리 이미지에 대한 공유가 가능 재배치(relocation)이 가능 하드웨어에 의존하지 않는 코드의 작성 가능 가상 메모리의 단점 메모리 단편화 연속된 메모리 영역을 사용하는 경우에 단편화 되어 있으면 메모리 요구가 실패

BSS : Block Shared by Symbol 유닉스 커널 개요 가상 메모리 구조 kernel stack text data bss kernel space : 1 GB user space : 3 GB 가상 메모리 : 4 GB 3 GB heap /*지역 변수*/ argc, argv, etc.. /*전역 변수*/ a, b, etc.. /*명령어*/ BSS : Block Shared by Symbol

유닉스 커널 개요 메모리 관리 커널 메모리 할당자 메모리 할당자가 가져야 할 특징 시스템의 모든 부분에서 메모리 영역에 관련한 요청을 처리하는 서브시스템 커널 서브시스템 또는 사용자 프로그램이 시스템 콜을 요청하여 호출 메모리 할당자가 가져야 할 특징 빠른 수행속도 낭비되는 메모리 양의 최소화 메모리 단편화의 최소화 다른 메모리 관리 서브시스템과의 협력

유닉스 커널 개요 메모리 관리 프로세스의 가상 주소 공간 다루기 메모리 영역으로 구성한 가상 주소 공간 할당 커널은 프로세스의 가상 주소 공간을 메모리 영역 디스크립터 목록으로 저장 메모리 영역으로 구성한 가상 주소 공간 할당 실행 코드 초기화 데이터 초기화되지 않은 데이터 초기 프로그램 스택 공유 라이브러리에 필요한 실행 코드와 데이터 힙

유닉스 커널 개요 메모리 관리 스와핑과 캐싱 스와핑 프로세스가 사용할 수 있는 가상 주소 공간의 크기를 확장 페이지 프레임 내용을 기본 스와핑 단위로 취급 스왑 아웃된 페이지 접근시 예외 발생 에외 핸들러가 새로운 페이지 프레임 할당후, 이전 내용으로 초기화 캐싱 메모리에 비해 하드디스크가 느리기 때문에 병목현상 발생 디스크의 읽은 블록에 대응하는 디스크 버퍼를 램에 로드 디스크에 기록하는 것을 나중으로 미루는 정책 주기적으로 바뀐 버퍼를 디스크에 기록

유닉스 커널 개요 장치 드라이버 장치 드라이버 사용시의 이점 커널은 장치 드라이버를 통해 입출력 장치와 상호 작용 장치를 제어하는 자료 구조와 함수로 이루어짐 장치 드라이버 사용시의 이점 장치 고유의 코드를 특정 모듈에 삽입 가능 인터페이스 명세만으로 새로운 장치 추가 가능 모든 장치를 동일하게 취급하고, 같은 인터페이스로 접근 시스템을 재부팅하지 않고도 동적으로 로드할 수 있는 모듈 장치 드라이버를 만들 수 있음

(Device Driver Interface) 유닉스 커널 개요 장치 드라이버 인터페이스 P 시스템 콜 인터페이스 가상 파일시스템 문자 장치 파일 블록 장치 파일 tty 드라이버 테이프 디스크 커널 DDI (Device Driver Interface)

시스템 호출이 종료되고 스케줄 될 때 까지 잠든다 인터럽트 처리 시스템 호출은 일반적으로 특정 프로세스에 의해 선점되지 않음 외부장치접근과 같은 많은 시간이 소모되는 시스템호출은 그 작동이 완료될 때까지 그 시스템호출을 수행한 프로세스를 잠들게 함 CPU는 다른 프로세스를 수행하도록 스케줄 프로세스1 CPU 디스크 프로세스2 Read() 시스템호출 시스템 호출이 종료되고 스케줄 될 때 까지 잠든다

인터럽트 처리 인터럽트 하드웨어가 커널에게 처리를 부탁 CPU를 차지하기위한 프로세스 경쟁과 같이 하드웨어 장치들도 인터럽트 처리를 위해 경쟁 장치의 중요도에 따라 우선순위가 할당됨 인터럽트가 발생하면 현재 실행중인 프로세스는 일시 중지되고 인터럽트가 처리됨

인터럽트 처리 인터럽트 처리 도중 다른 인터럽트 발생시 프로세스1 현재 처리중인 인터럽트 보다 우선 순위가 높은 인터럽트가 발생하면 현재 처리 중인 인터럽트 처리는 중지되며, 새로 발생한 인터럽트가 처리됨 현재 처리중인 인터럽트 보다 낮은 우선순위의 인터럽트이면 무시됨 인터럽트1 발생 프로세스1 인터럽트1 처리루틴 인터럽트2 발생 인터럽트2 처리루틴

인터럽트 처리 프로세스가 시스템 호출시 또 다른 인터럽트를 무시하도록 특정 수준의 인터럽트 무시 명령을 수행할 수 있음 입출력을 수행하는 프로세스에서 지정

INODE inode : Index Node 디스크의 시작 부분의 특수장소에 저장됨 모든 파일은 inode를 가짐 각 파일에 대한 정보 기억 파일의 유형:정규, 디렉토리, 특수파일 파일 허가권 소유권과 그룹id 하드링크 계수 수정시기 시작 블록의 위치 등 inode는 약 120byte의 고정 크기를 가지는 자료구조 디스크의 시작 부분의 특수장소에 저장됨 모든 파일은 inode를 가짐

INODE inode 직접 블럭 포인터 간접 포인터 블록 맵 0..9로 디스크 블럭 1024개의 블록 사용 10..1033으로 0..9로 1024개의 블록 사용 (1024 x 4KB4MB)

1024개의 블록 주소를 가지고 있는 1024개의 간접 블록 위치 INODE 4MB보다 큰 파일 지정을 위한 inode 구조 파일이 커지면 간접 지정의 크기를 증가시킴 직접 블럭 포인터 간접 포인터 inode 디스크 블럭 블록 10..1033으로 1024개의 간접 블록 위치 블록 주소 0..9로 1024개의 블록 주소를 가지고 있는 1024개의 간접 블록 위치 이중 간접 포인터

INODE 파일 시스템의 구조 부트 블럭(boot block) 슈퍼 블록(super block) inode블록 List 디스크의 첫번째 논리적 블록 유닉스가 활성화되는데 필요한 실행 코드가 존재 슈퍼 블록(super block) 디스크 자체에 대한 정보 포함 파일 시스템에 있는 총 블록 수, inode 자유 리스트 목록 수, 자유 블록 비트맵(Pg 605 그림 11.21), 블록의 크기, 자유 블록의 개수, 사용중인 블록 수 inode블록 List 사용자 블럭

프로세스 관리 및 스케줄 스케줄러(Scheduler) Memory Manager 프로세스가 실행될 수 있도록 커널에 의해 CPU에 할당 Memory Manager 프로세스에게 RAM을 할당

프로세스 관리 및 스케줄 프로그램의 소스코드가 컴파일되면 특수한 형태로 저장됨 매직 수를 포함하는 주 헤더 섹션 1의 헤더 매직 수 : 실행될 수 있는 파일의 유형 정의 매직 수를 포함하는 주 헤더 섹션 1의 헤더 섹션 2의 헤더 섹션 1 섹션 2 실행파일의 구조 코드, 데이터를 포함하는 부분들

프로세스 관리 및 스케줄 유닉스의 실행 초기 프로세스 PID 이름 swapper 1 init 2 pagedaemon

프로세스 관리 및 스케줄 Signal 프로세스 상태 Suspended Sleeping Zombified Running Runnable Idle Signal 종료 사건대기 사건발생 초기화 CPU할당

프로세스 관리 및 스케줄 프로세스 구성 사용자 영역 코드 영역, 데이터 영역, 스택 영역, 사용자 영역, 페이지 테이블 프로세스들이 시그널에 어떻게 반응해야 하는지의 기록 프로세스가 연 파일 기술자의 기록 프로세스가 CPU시간을 사용한 시간 기록

프로세스 관리 및 스케줄 프로세스 테이블 프로세스 테이블의 항목 커널에 의해서만 접근되는 자료구조 시스템 내의 각 프로세스마다 하나의 항목을 가지는 고정된 크기의 프로세스 정보를 나타내는 테이블 프로세스 테이블의 항목 프로세스 ID, 부모 ID 실, 유효 사용자 ID, 그룹 ID 프로세스의 상태 코드, 자료, 스택, 사용자 영역의 위치 대기중인 시그널의 목록

프로세스 관리 및 스케줄 스케줄러 경쟁하는 프로세스들 사이에 CPU를 공정하게 사용케 조정 다중-수준 우선순위 큐 사용 (Pg 617 그림 11.30) 프로세스들의 중요도에 따라 CPU 시간이 할당됨 (기본적으로 각 프로세스들에게 부여되는 CPU시간은 1/10초) 우선순위 = 상수1/(최근 CPU사용량) + 상수2/(nice 설정)

프로세스 관리 및 스케줄 매초마다 우선순위 재 계산 모든 프로세스의 우선순위 재계산 매초 마다 실행

프로세스 관리 및 스케줄 매 1/10초마다 매 1/10초 마다 실행 큐상에서 최우선 순위 프로세스 선택 다음 중 하나가 될 때까지 실행 시간 할당량 끝 2. 잠들기 3. 시스템호출에서 복귀하고 더 높은 우선 순위가 실행할 준비중 프로세스가 아직 실행가능하면, 실행 큐의 뒤에 이 프로세스를 위치시킴 매 1/10초 마다

프로세스 관리 및 스케줄 매 클럭 틱 마다 매 클럭 틱 마다 현 프로세스의 클럭 틱 계수를 1 증가 4개의 틱이 모이면, 현 프로세스의 우선순위 재계산 매 클럭 틱 마다

질의 및 응답