32
Mi Jung Choi [email protected] Dept. of Computer Science 9 9 장 장장장 장장장장 장 장 장장장 장장장장 장 장장장 장장장장장 장장장 장장장장장

9 장 리눅스 운영체제 및 시스템 프로그래밍

  • Upload
    wyman

  • View
    126

  • Download
    1

Embed Size (px)

DESCRIPTION

9 장 리눅스 운영체제 및 시스템 프로그래밍. 운영체제의 기능 운영체제의 발전 리눅스 운영체제의 개요 프로세스 관리 리눅스 프로세스 관리. 제 9 장 학습내용. 프로세서 관리 기억장치의 관리 리눅스 메모리 관리 리눅스 프로세스 동기화 프로그래밍 리눅스 파일 시스템 프로그래밍. 제 9 장 학습내용. 운영체제 (Operating System) 컴퓨터의 주 기억장치 내에 상주하면서 컴퓨터 하드웨어와 사용자 사이에서 인터페이스 역할을 해 주는 시스템 소프트웨어. 운영체제. - PowerPoint PPT Presentation

Citation preview

Page 1: 9 장 리눅스 운영체제 및         시스템 프로그래밍

Mi Jung [email protected]

Dept. of Computer Science

99 장 리눅스 운영체제 및장 리눅스 운영체제 및 시스템 프로그래밍 시스템 프로그래밍

Page 2: 9 장 리눅스 운영체제 및         시스템 프로그래밍

시스템 프로그래밍

제 제 9 9 장 학습내용장 학습내용

• 운영체제의 기능

• 운영체제의 발전

• 리눅스 운영체제의 개요

• 프로세스 관리

• 리눅스 프로세스 관리

Page 2

Page 3: 9 장 리눅스 운영체제 및         시스템 프로그래밍

시스템 프로그래밍

제 제 9 9 장 학습내용장 학습내용

• 프로세서 관리

• 기억장치의 관리

• 리눅스 메모리 관리

• 리눅스 프로세스 동기화 프로그래밍

• 리눅스 파일 시스템 프로그래밍

Page 3

Page 4: 9 장 리눅스 운영체제 및         시스템 프로그래밍

시스템 프로그래밍

운영체제운영체제

• 운영체제 (Operating System)

– 컴퓨터의 주 기억장치 내에 상주하면서 컴퓨터 하드웨어와

사용자 사이에서 인터페이스 역할을 해 주는 시스템

소프트웨어

Page 4

Page 5: 9 장 리눅스 운영체제 및         시스템 프로그래밍

시스템 프로그래밍

운영체제의 기능운영체제의 기능

• 컴퓨터를 초기화 시켜 작업을 수행 할 수 있는 상태로 유지시키는

역할

• 컴퓨터 자원을 여러 사용자들이 나누어 쓸 수 있도록 자원을 관리

• 사용자가 하드웨어의 동작 원리를 알 필요 없이 기계를 사용할 수

있도록 편의성 제공

Page 5

Page 6: 9 장 리눅스 운영체제 및         시스템 프로그래밍

시스템 프로그래밍

운영체제의 발전운영체제의 발전 (1)(1)

• 단일 작업 시스템

- 한 번에 하나의 작업 처리

- 카드 판독기 , 라인프린터

• 일괄 처리 시스템

- 다량의 처리 데이터를 모아서 일괄적으로 처리

입력입력 주 기억장치프로세서

주 기억장치프로세서 출력출력

입력배치입력배치 출력배치출력배치

Page 6

Page 7: 9 장 리눅스 운영체제 및         시스템 프로그래밍

시스템 프로그래밍

운영체제의 발전운영체제의 발전 (2)(2)

• 다중 프로그래밍

- 여러 프로그램을 동시에 수행하는 기법

- 둘 이상의 프로그램이 시스템의 각 부분을 공유하거나 시차를

두고 나누어 쓰는 방법

프로세서프로세서작업입력 출력

입출력 요구와 할당 시간 초과

Page 7

Page 8: 9 장 리눅스 운영체제 및         시스템 프로그래밍

시스템 프로그래밍

운영체제의 발전운영체제의 발전 (3)(3)

• 스풀링

- 출력중인 작업에 프린터를 독점

- 현재 진행중인 작업의 수 만큼 프린터 설치

보조기억장치 운영체제 사용자

READ

WRITE

논리적입력장치

논리적입력장치

논리적출력장치

논리적출력장치

입력프로그램입력프로그램

스풀링프로그램

스풀링프로그램

출력프로그램출력프로그램실제출력장치

실제입력장치

사용자작업

Page 8

Page 9: 9 장 리눅스 운영체제 및         시스템 프로그래밍

시스템 프로그래밍

운영체제의 발전운영체제의 발전 (4)(4)

• 다중처리

- 둘 이상의 프로세서가 시스템을 구성하는 운영체제

주 프로세스주 프로세스

입출력 프로세스

버 스

공용 주 기억장치

입출력버스

Page 9

Page 10: 9 장 리눅스 운영체제 및         시스템 프로그래밍

시스템 프로그래밍

운영체제의 발전운영체제의 발전 (5)(5)

• 시분할 시스템

- 인터액티브 , 대화형

프로세서프로세서 시분할시분할

Page 10

Page 11: 9 장 리눅스 운영체제 및         시스템 프로그래밍

시스템 프로그래밍

운영체제의 발전운영체제의 발전 (6)(6)

• 분산처리 시스템

- 컴퓨터 네트워크를 이용하는 운영체제

- 여러 컴퓨터들이 프로세서 사이의 데이터 링크를 통하여 교신하는

시스템

프로세서

주 기억장치

보조 기억장치

데이터 링크

컴퓨터 A

프로세서

주 기억장치

보조 기억장치

컴퓨터 B

Page 11

Page 12: 9 장 리눅스 운영체제 및         시스템 프로그래밍

시스템 프로그래밍

운영체제의 발전운영체제의 발전 (7)(7)

• 가상 시스템

- 하나의 컴퓨터에 여러 개의 서로 다른 운영 체제를 동시에 수행하여

여러 개의 컴퓨터 시스템이 동작하는 것처럼 보이게 한다 .

가상운영체제

운영체제 1 운영체제 2 운영체제 3

사용자 사용자 사용자 사용자

컴퓨터 운영체제

Page 12

Page 13: 9 장 리눅스 운영체제 및         시스템 프로그래밍

시스템 프로그래밍

리눅스의 특징리눅스의 특징

• 멀티태스킹 , 멀티유저

• GNU 소프트웨어 제공

• X Window

• TCP/IP 네트워킹

• 오픈소스

• 가상 메모리와 공유 라이브러리

• 저사양에서도 강력한 성능 발휘

• 프로그램의 호환성이 떨어짐

Page 13

Page 14: 9 장 리눅스 운영체제 및         시스템 프로그래밍

시스템 프로그래밍

프로세스 관리프로세스 관리

• 프로세스

- 다중 프로그래밍 처리의 기본 단위

- 운영체제 내에서 실행중인 연산과정 , 프로그램 상태의 집합

프로세스 이미지

- 프로세스에 관한 정보를 보관하고 있는 기억 장소

- 프로세스의 상태

Page 14

Page 15: 9 장 리눅스 운영체제 및         시스템 프로그래밍

시스템 프로그래밍

프로세스 상태프로세스 상태

• 실행 : 현재 프로세스에 의하여 처리되고 있는 상태

• 대기 : 입출력 프로세스의 작업이 완료되기를 기다리는 상태

• 준비 : 프로세스의 배당을 기다리는 상태

Page 15

Page 16: 9 장 리눅스 운영체제 및         시스템 프로그래밍

시스템 프로그래밍

시스템 병렬성시스템 병렬성

• 여러 프로세스가 서로 아무런 영향을 주지 않고 병렬적으로 동시

수행되는 방법

• 시분할 시스템 및 다중 프로그래밍 시스템에서의 우선순위 처리에

중요한 개념

• 상호배제 (mutual exclusion)

– 한 프로세스가 공용변수를 변경하고 있을 때는 다른 프로세스가

이들 공용변수를 사용하면 안된다 .

• 위험지역 (critical region)

– 프로그램에서 공용변수를 접근하는 부분

Page 16

Page 17: 9 장 리눅스 운영체제 및         시스템 프로그래밍

시스템 프로그래밍

프로세스의 동기화프로세스의 동기화

• 프로세스 교신 (process communication)

• 동기화 문제 해결

– 테스트와 세트 (test and set)

– 세마포어 (semaphore)

– 이벤트 (event)

– 메시지 (message)

Page 17

Page 18: 9 장 리눅스 운영체제 및         시스템 프로그래밍

시스템 프로그래밍

교착 상태교착 상태

• 둘 이상의 프로세스들이 서로 다른 프로세스가 차지하고 있는

자원을 요구하며 무한정 기다리게 되어 결국은 해당

프로세스들이 진행이 중단되는 현상

Page 18

Page 19: 9 장 리눅스 운영체제 및         시스템 프로그래밍

시스템 프로그래밍

리눅스 프로세스 관리리눅스 프로세스 관리

• 리눅스는 멀티 프로세싱 운영체제로서 개별 프로세스는 자신의 가상

주소 공간에서 실행

• 커널이 제공하는 안전한 방법을 통하지 않고서는 다른 프로세스와

상호작용을 할 수 없다 .

Page 19

Page 20: 9 장 리눅스 운영체제 및         시스템 프로그래밍

시스템 프로그래밍

프로세서 관리 프로세서 관리

• 작업 스케쥴링

– 일괄 처리 시스템 – 작업 스케쥴러

– 시분할 시스템 – 명령 인터프리터

• 프로세스 스케쥴링

– 디스패처

– 준비 리스트에서 다음 수행될 프로세스 결정

– 선점형 , 비선점형

Page 20

Page 21: 9 장 리눅스 운영체제 및         시스템 프로그래밍

시스템 프로그래밍

프로세서 관리 프로세서 관리

• 스케쥴링 정책

– 스케쥴러에 포함된 일련의 선정 규칙

• 종류

– FCFS : 먼저 도착한 대상을 먼저 처리하는 정책

– 라운드 로빈 : 각 프로세스에게 차례대로 일정한 배당시간

동안 프로세서를 차지하도록 하는 정책

– 우선순위 : 각 작업이나 프로세스에게 처리 우선순위를

정해서 스케쥴링

Page 21

Page 22: 9 장 리눅스 운영체제 및         시스템 프로그래밍

시스템 프로그래밍

기억장치의 관리기억장치의 관리

• 기억 장소 할당

– 수행 대상의 작업에게 주 기억장치의 공간을 배정

• 교체

– 시분할 시스템에서 주로 사용

– 한 작업이 프로세서에 의해 수행되지 않고 입출력 동작 중일 때

이 작업을 주 기억장치로부터 보조기억장치로 내보내고 우선

순위가 높은 그 다음 작업으로 대체

Page 22

Page 23: 9 장 리눅스 운영체제 및         시스템 프로그래밍

시스템 프로그래밍

기억장치의 관리기억장치의 관리

• 오버레이

– 작업 수행에 요구되는 총 기억장치의 용량이 사용 가능한 주

기억장치의 용량을 초과할 때 사용

• 세그먼테이션

– 어느 순간의 필요한 작업의 일부만을 주 기억 장치 내에 있도록

운영체제가 프로그램을 부분적으로 나누어 실행하는 기법

Page 23

Page 24: 9 장 리눅스 운영체제 및         시스템 프로그래밍

시스템 프로그래밍

기억장치의 관리기억장치의 관리

• 페이징

– 다수의 병행적으로 실행되는 프로그램들 간에 제한된 양의 주

기억장치를 비연속적으로 관리

• 가상 기억장치

– 사용자로 하여금 보조 기억장치를 주 기억장치의 확장으로

간주하게 하여 기억용량의 제한을 없도록 하는 기법

Page 24

Page 25: 9 장 리눅스 운영체제 및         시스템 프로그래밍

시스템 프로그래밍

리눅스 메모리 관리리눅스 메모리 관리

• 리눅스는 가상 기억장치를 지원

• 스왑 영역

– 가상 메모리로 쓰이는 하드디스크의 영역

• 스왑 파일 생성

$dd if=/dev/zeor of=/extra-swap bs=1024 count=1024

1024+0 records in

1024+0 records out

$

Page 25

Page 26: 9 장 리눅스 운영체제 및         시스템 프로그래밍

시스템 프로그래밍

리눅스 메모리 관리리눅스 메모리 관리

• 스왑 공간 사용하기

– swapon

• 스왑 공간 초기화

• 커널에게 해당 공간을 스왑으로 사용할 수 있다는 점을

알려준다 .

– free

• 스왑의 사용 상황 모니터

Page 26

Page 27: 9 장 리눅스 운영체제 및         시스템 프로그래밍

시스템 프로그래밍

리눅스 프로세스 동기화 프로그래밍리눅스 프로세스 동기화 프로그래밍

• 세마포어를 이용한 동기화

#include <semaphore.h>

int sem_init(sem_t *sem,int pshared, unsigned int value);

• 뮤텍스를 이용한 동기화

#include <pthread.h>

int prhread_mutex_init(prhread_mutex_t *mutex,const

prhread_mutexattr_t *mutexattr);

int prhread_mutex_lock(pthread_mutex_t *mutex);

int prhread_mutex_unlock(pthread_mutex_t *mutex);

int prhread_mutex_destroy(pthread_mutex_t *mutex);

Page 27

Page 28: 9 장 리눅스 운영체제 및         시스템 프로그래밍

시스템 프로그래밍

리눅스 파일 시스템 프로그래밍리눅스 파일 시스템 프로그래밍

• chmod

파일이나 디렉토리에 대한 허용 권한 변경

#include<sys/stat.h>

int chmod(const char *path, mode_t mode);

Page 28

Page 29: 9 장 리눅스 운영체제 및         시스템 프로그래밍

시스템 프로그래밍

리눅스 파일 시스템 프로그래밍리눅스 파일 시스템 프로그래밍

• chown

파일의 소유자 변경

#include<unistd.h>

int chown(const char *path, uid_t owner,

gid_t group);

Page 29

Page 30: 9 장 리눅스 운영체제 및         시스템 프로그래밍

시스템 프로그래밍

리눅스 파일 시스템 프로그래밍리눅스 파일 시스템 프로그래밍

• unlink : 파일제거

• link : 새로운 링크 생성

• symlink : 기호링크 생성

#include<unistd.h>

int unlink(const char *path);

int link(const char *path1, const char *path2);

int symlink(const char *path1, const char *path2);

Page 30

Page 31: 9 장 리눅스 운영체제 및         시스템 프로그래밍

시스템 프로그래밍

제 제 9 9 장 요약장 요약

• 운영체제의 기능

• 운영체제의 발전

• 리눅스 운영체제의 개요

• 프로세스 관리

• 리눅스 프로세스 관리

Page 31

Page 32: 9 장 리눅스 운영체제 및         시스템 프로그래밍

시스템 프로그래밍

제 제 9 9 장 요약장 요약

• 프로세서 관리

• 기억장치의 관리

• 리눅스 메모리 관리

• 리눅스 프로세스 동기화 프로그래밍

• 리눅스 파일 시스템 프로그래밍

Page 32