SlideShare a Scribd company logo
1 of 20
운영체제의 정의와 역할
목차
• 운영체제의 정의
• 운영체제의 역할
◦ 프로세스 관리
◦ 메모리 관리
◦ 저장장치 관리
◦ 보호와 보안
• 리눅스에서 다양한 개발 도구 프로그램을 사용하여 소프트웨어를 작성할 수 있다.
• 운영체제의 역할과 기본 동작을 이해하고, 응용 프로그래밍 인터페이스를 이용할 수 있다
• 파일 시스템의 개념을 이해하고 파일 입출력 프로그래밍을 할 수 있다.
• 프로세스와 쓰레드의 개념을 이해하고 관련 API를 이용하여 프로그램을 작성할 수 있다.
• 동기화를 통한 병행 제어의 개념을 이해하고 동기화와 데드락 방지 프로그래밍을 할 수 있
• 가상 메모리의 개념과 메모리 관리 기술을 이해하고, 동적메모리 할당과 메모리 조작
프로그래밍을 할 수 있다.
학습 목표
• 하드웨어 (Hardware)
◦ 기본적인 컴퓨팅 자원을 제공 (CPU, memory, I/O devices)
• 운영체제 ( Operating system)
◦ 다양한 응용 프로그램과 사용자들 사이에서 하드웨어의 사용을 제어하고 조정한다.
• 응용 프로그램 (Application programs)
◦ 사용자의 문제를 해결하기 위해 시스템 자원을 사용하는 방법을 정의한다.
◦ ex) Word processors, compilers, web browsers, database systems, video games
• 사용자 (Users)
◦ People, machines, other computers
컴퓨터 시스템의 구성
컴퓨터 시스템의 하드웨어 구성
• 컴퓨터 시스템
◦ 하나 이상의 CPU와 장치 제어기(device controller)가 공유 메모리를 접근할 수 있는
공통 버스(bus)에 연결
◦ CPU와 장치 제어기는 메모리에 접근하기 위해 경쟁하면서
병행적으로 실행(concurrent execution)
운영체제란?
• 컴퓨터 하드웨어와 사용자 사이의 중재 역할을 수행하는 프로그램이다.
◦ 프로그램을 실행하고 문제를 쉽게 해결해준다.
◦ 컴퓨터 시스템을 편리하게 사용할 수 있도록 해준다.
◦ 컴퓨터 하드웨어를 효율적으로 이용하도록 해준다.
유저
애플리케이
션
운영체제 하드웨어
운영체제란?
• 컴퓨터 시스템을 추상화하여 프로그램과 사용자에게 제공한다.
CPU 메모리
저장장
치
(HDD)
프로세
스
가상메
모리
파일
운영체제의 정의
• 자원 할당자 (resource allocator)
◦ 하드웨어 자원을 관리하여 효율적이고 공정하게 사용 요청을 처리한다.
• 제어 프로그램 (control program)
◦ 에러와 적합하지 않은 컴퓨터 사용을 방지하면서 프로그램을 실행한다.
• 컴퓨터에서 항상 실행되는 하나의 프로그램 (커널, kernel)
◦ cf.) 시스템 프로그램, 응용 프로그램
운영체제의 핵심기능
• 다중 프로그래밍 (Multiprogramming)
◦ CPU와 자원의 이용률(utilization)을 향상시켜준다.
◦ CPU가 항상 동작하도록 작업(job, 코드와 데이터)을 배치한다.
◦ 모든 작업 중에서 일부가 메모리에 적재되며 작업 스케줄링 (job scheduling)에 의해
실행될 작업을 선택한다.
• 시분할 (Time-Sharing) - 멀티태스킹(multitasking)
◦ 사용자가 실행 중인 작업과 상호작용이 가능하도록 CPU가 작업을 매우 빈번하게 교체
실행한다. (interactive computing)
◦ 응답시간(response time)이 1초 미만
◦ 각 사용자는 하나 이상의 프로그램을 메모리에서 실행한다. (process)
◦ 실행 대기 중인 여러 개의 작업을 CPU 스케줄링으로 처리한다.
◦ 스와핑(swapping)과 가상 메모리(virtual memory) 기술을 이용한다.
운영체제의 역할
• 프로세스 관리 (Process Management)
• 메모리 관리 (Memory Management)
• 저장장치 관리 (Storage Management)
◦ 파일 시스템 (File system)
◦ 대용량 저장장치 (Secondary Storage)
• 입출력 시스템(I/O System)
• 보호와 보안 (Protection & Security)
• 네트워킹 (Networking)
프로세스 관리
• 프로세스 (Process): 실행중인 프로그램
◦ 프로그램: 오떤 목적을 위한 명령어의 집합 (파일)으로써 수동적 개체이다.
◦ 프로세스: 순차적으로 실행되는 능동적 개체이다.
• 프로세스가 작업을 완료하기 위해 필요한 자원
◦ 프로세스가 시작될 때 혹은 실행 중에 할당
◦ CPU, 메모리, 파일, 입출력장치
◦ 초기 데이터
• 병행 실행(Concurrency)
◦ 다수 개의 프로세스를 하나의 CPU 상에서 멀티플렉싱(multiplexing)하여 처리한다.
프로세스 관리
• 운영체제의 프로세스 관리 기능
◦ CPU에 대해 여러 프로세스와 쓰레드(thread)의 스케줄링
◦ 사용자 및 시스템 프로세스의 생성과 제거
◦ 프로세스의 일시 중지(suspend)와 재실행(resume)
◦ 프로세스 동기화를 위한 기법 제공
◦ 프로세스 간 통신을 위한 기법 제공
◦ 교착상태(deadlock)를 처리하기 위한 기법 제공
메모리 관리
• 폰 노이만 (Von Neumann) 방식 컴퓨터
◦ 모든 명령과 데이터는 실행과 처리를 위해 메모리 상에 존재해야 한다.
◦ 메모리는 CPU가 직접 접근할 수 있는 유일한 저장장치이다.
◦ 메모리는 워드(word) 혹은 바이트(byte)의 큰 배열이며,
각각은 주소(address)에 의해 식별된다.
Input
Device
Output
Device
Central Processing Unit
Control Unit
Arithmetic /Logic Unit
Memory Unit
메모리 관리
• 메모리 관리
◦ 어떤 프로세스와 데이터를 메모리에 적재할 지를 결정한다.
◦ 목적: CPU 사용률(utilization)과 사용자에 대한 응답시간을 최적화한다.
• 운영체제의 메모리 관리 기능
◦ 메모리의 어느 부분이 현재 누구에 의해 사용되는지 추적한다.
◦ 어떤 프로세스와 데이터가 메모리에 적재하고 제거될 지 결정한다.
◦ 메모리 공간을 할당(allocation)하고 회수한다.
◦ 프로세스에게 가상 메모리 공간을 제공한다.
저장장치 관리
• 운영체제의 역할
◦ 저장장치의 물리적 특성을 추상화(abstraction)하여 논리적 저장 단위인 파일(file)로 제
저장장치 관리
• 파일 시스템 (File System)
◦ 파일(file): 파일생성자에 의해 정의된 관련 정보의 집합체이다.
프로그램과 데이터를 표현하고, 비트/바이트/라인/레코드들의 연속이다.
◦ 디렉토리(directory): 파일관리를 용이하게 하기 위한 정보이다.
◦ 파일 접근 제어: 누가 어떤 파일에 접근할 수 있는지를 결정한다.
• 운영체제의 파일 시스템 관리 기능
◦ 파일 및 디렉토리의 생성과 제거
◦ 파일 및 데릭토리를 조작하기 위한 프리미티브(primitive) 제공
◦ 파일을 보조 저장장치(Secondary storage)로 사상(mapping)
◦ 안정적인 (비휘발성) 저장 매체에 파일을 백업
대용량 저장장치 관리
• 보조 저장장치 (Secondary Storage)
◦ 다량의 프로그램과 데이터를 장기간 보관하기 위한 저장장치
◦ 주로 디스크 장치가 사용된다. (HDD, SDD)
◦ CPU 및 메모리와의 성능 차이가 매우 크기 때문에, 컴퓨터 시스템 전체의 성능에 중요
부분을 차지한다. (병목 현상)
• 운영체제의 대용량 저장장치 관리 기능
◦ 자유 공간 (free-space) 관리
◦ 저장 공간 할당 (allocation)
◦ 디스크 스케줄링
저장장치의 계층과 캐싱
• 캐싱 (caching)
◦ 낮은 단계 저장장치에 저장된 많은 정보를 높은 단계 저장장치가 제공하는 빠른 속도로
◦ 낮은 단계 저장장치에서 자주 접근되는 일부의 정보를 높은 단계 저장장치에 저장
(Caching)
입출력 시스템
• 운영체제의 역할
◦ 하드웨어 장치의 고유한 특성을 사용자에게 숨긴다.
ex) keyboard, mouse, monitor, network adaptor, etc
• 운영체제의 입출력 시스템 관리 기능
◦ 다양한 입출력 장치의 설치 및 제거
◦ 버퍼링, 캐싱, 스풀링을 포함한 입출력의 메모리 관리
◦ 범용 및 특수 장치 드라이버 인터페이스
(I/O System)
보호와 보안
• 보호 (Protection)
◦ 운영체제가 정의한 자원에 대해 프로세스나 사용자의 접근을 제어한다.
• 보안 (Security)
◦ 내부 또는 외부의 공격으로부터 시스템을 방어하는 기능
◦ 공격의 예: DOS(denial-of-service), worms, viruses, identity theft, theft of service
• 사용자 식별
◦ 누가 무엇을 할 수 있는지 결정하기 위한 수단
◦ 사용자 ID(보안 ID)를 모든 파일과 프로세스에 적용하여 해당 사용자의 접근을 제어한
◦ 그룹 ID를 이용하여 다수의 사용자 접근 제어를 한번에 처리한다.

More Related Content

What's hot

[OS] Operating System 5 layer
[OS] Operating System 5 layer[OS] Operating System 5 layer
[OS] Operating System 5 layerssuserb2b4e71
 
프로그래머가 알아야 하는 메모리 관리 기법
프로그래머가 알아야 하는 메모리 관리 기법프로그래머가 알아야 하는 메모리 관리 기법
프로그래머가 알아야 하는 메모리 관리 기법중선 곽
 
Mint64 os개발이야기 한승훈
Mint64 os개발이야기 한승훈Mint64 os개발이야기 한승훈
Mint64 os개발이야기 한승훈Seunghun han
 
코딩인카페 C&JAVA 기초과정 컴퓨터와 프로그래밍 소개(2)
코딩인카페 C&JAVA 기초과정 컴퓨터와 프로그래밍 소개(2)코딩인카페 C&JAVA 기초과정 컴퓨터와 프로그래밍 소개(2)
코딩인카페 C&JAVA 기초과정 컴퓨터와 프로그래밍 소개(2)유익아카데미
 
컴퓨터공학 스터디 W3 발표: 컴퓨터 구조
컴퓨터공학 스터디 W3 발표: 컴퓨터 구조컴퓨터공학 스터디 W3 발표: 컴퓨터 구조
컴퓨터공학 스터디 W3 발표: 컴퓨터 구조ssuser91b87c
 
컴퓨터 구조 분야의 8가지 아이디어
컴퓨터 구조 분야의 8가지 아이디어컴퓨터 구조 분야의 8가지 아이디어
컴퓨터 구조 분야의 8가지 아이디어usdrd90
 
Dolphin manager
Dolphin managerDolphin manager
Dolphin managerhogyun yu
 
One click recovery_application-특허_및_제품_조사
One click recovery_application-특허_및_제품_조사One click recovery_application-특허_및_제품_조사
One click recovery_application-특허_및_제품_조사호상 장
 
7 aaaaaaaaa
7 aaaaaaaaa7 aaaaaaaaa
7 aaaaaaaaausdrd90
 
노태상 - 리눅스 커널 개요 및 이슈 아이엠 (2010Y01M30D)
노태상 - 리눅스 커널 개요 및 이슈 아이엠 (2010Y01M30D)노태상 - 리눅스 커널 개요 및 이슈 아이엠 (2010Y01M30D)
노태상 - 리눅스 커널 개요 및 이슈 아이엠 (2010Y01M30D)Ubuntu Korea Community
 
솔라리스 OS 로그 분석
솔라리스 OS 로그 분석솔라리스 OS 로그 분석
솔라리스 OS 로그 분석Dong-Jin Park
 
SECUDRIVE 디스크 완전 삭제 소개
SECUDRIVE 디스크 완전 삭제 소개SECUDRIVE 디스크 완전 삭제 소개
SECUDRIVE 디스크 완전 삭제 소개Secudrive
 

What's hot (13)

[OS] Operating System 5 layer
[OS] Operating System 5 layer[OS] Operating System 5 layer
[OS] Operating System 5 layer
 
프로그래머가 알아야 하는 메모리 관리 기법
프로그래머가 알아야 하는 메모리 관리 기법프로그래머가 알아야 하는 메모리 관리 기법
프로그래머가 알아야 하는 메모리 관리 기법
 
Mint64 os개발이야기 한승훈
Mint64 os개발이야기 한승훈Mint64 os개발이야기 한승훈
Mint64 os개발이야기 한승훈
 
코딩인카페 C&JAVA 기초과정 컴퓨터와 프로그래밍 소개(2)
코딩인카페 C&JAVA 기초과정 컴퓨터와 프로그래밍 소개(2)코딩인카페 C&JAVA 기초과정 컴퓨터와 프로그래밍 소개(2)
코딩인카페 C&JAVA 기초과정 컴퓨터와 프로그래밍 소개(2)
 
컴퓨터공학 스터디 W3 발표: 컴퓨터 구조
컴퓨터공학 스터디 W3 발표: 컴퓨터 구조컴퓨터공학 스터디 W3 발표: 컴퓨터 구조
컴퓨터공학 스터디 W3 발표: 컴퓨터 구조
 
컴퓨터 구조 분야의 8가지 아이디어
컴퓨터 구조 분야의 8가지 아이디어컴퓨터 구조 분야의 8가지 아이디어
컴퓨터 구조 분야의 8가지 아이디어
 
Dolphin manager
Dolphin managerDolphin manager
Dolphin manager
 
One click recovery_application-특허_및_제품_조사
One click recovery_application-특허_및_제품_조사One click recovery_application-특허_및_제품_조사
One click recovery_application-특허_및_제품_조사
 
Bootchart 송형주
Bootchart 송형주Bootchart 송형주
Bootchart 송형주
 
7 aaaaaaaaa
7 aaaaaaaaa7 aaaaaaaaa
7 aaaaaaaaa
 
노태상 - 리눅스 커널 개요 및 이슈 아이엠 (2010Y01M30D)
노태상 - 리눅스 커널 개요 및 이슈 아이엠 (2010Y01M30D)노태상 - 리눅스 커널 개요 및 이슈 아이엠 (2010Y01M30D)
노태상 - 리눅스 커널 개요 및 이슈 아이엠 (2010Y01M30D)
 
솔라리스 OS 로그 분석
솔라리스 OS 로그 분석솔라리스 OS 로그 분석
솔라리스 OS 로그 분석
 
SECUDRIVE 디스크 완전 삭제 소개
SECUDRIVE 디스크 완전 삭제 소개SECUDRIVE 디스크 완전 삭제 소개
SECUDRIVE 디스크 완전 삭제 소개
 

Viewers also liked

Tomcat monitoring using_javamelody
Tomcat monitoring using_javamelodyTomcat monitoring using_javamelody
Tomcat monitoring using_javamelody중선 곽
 
우분투 한국 커뮤니티 나눔모임 발표 2013-02-23
우분투 한국 커뮤니티 나눔모임 발표 2013-02-23우분투 한국 커뮤니티 나눔모임 발표 2013-02-23
우분투 한국 커뮤니티 나눔모임 발표 2013-02-23유명환 FunFun Yoo
 
Security framework2
Security framework2Security framework2
Security framework2skccsocial
 
[제5회 KCD] 한국에서 커뮤니티를 운영한다는 건...
[제5회 KCD] 한국에서 커뮤니티를 운영한다는 건...[제5회 KCD] 한국에서 커뮤니티를 운영한다는 건...
[제5회 KCD] 한국에서 커뮤니티를 운영한다는 건...유명환 FunFun Yoo
 
창조경제 IoT 해커톤 교육 2일차 교육 자료
창조경제 IoT 해커톤 교육 2일차 교육 자료창조경제 IoT 해커톤 교육 2일차 교육 자료
창조경제 IoT 해커톤 교육 2일차 교육 자료유명환 FunFun Yoo
 
문돌이가 가르치는 웹 프론트엔드 기초 2차시
문돌이가 가르치는 웹 프론트엔드 기초 2차시문돌이가 가르치는 웹 프론트엔드 기초 2차시
문돌이가 가르치는 웹 프론트엔드 기초 2차시동현 조
 
Intranet query tuning (example)
Intranet query tuning (example)Intranet query tuning (example)
Intranet query tuning (example)중선 곽
 
[Codebakery 일반동아리] IoT의 개념 및 분야, 전망
[Codebakery 일반동아리] IoT의 개념 및 분야, 전망[Codebakery 일반동아리] IoT의 개념 및 분야, 전망
[Codebakery 일반동아리] IoT의 개념 및 분야, 전망동현 조
 
사칙연산 프로그램
사칙연산 프로그램사칙연산 프로그램
사칙연산 프로그램중선 곽
 
Online service 계층별 성능 모니터링 방안
Online service 계층별 성능 모니터링 방안Online service 계층별 성능 모니터링 방안
Online service 계층별 성능 모니터링 방안중선 곽
 
Scale up and scale out
Scale up and scale outScale up and scale out
Scale up and scale out중선 곽
 
숫자 구분자 처리 (Digit group separators)
숫자 구분자 처리 (Digit group separators)숫자 구분자 처리 (Digit group separators)
숫자 구분자 처리 (Digit group separators)중선 곽
 
Java 개발자가 하드웨어를 만나게 된다면??
Java 개발자가 하드웨어를 만나게 된다면??Java 개발자가 하드웨어를 만나게 된다면??
Java 개발자가 하드웨어를 만나게 된다면??유명환 FunFun Yoo
 
서버 아키텍쳐 입문
서버 아키텍쳐 입문서버 아키텍쳐 입문
서버 아키텍쳐 입문중선 곽
 
Web service performance_test_using_jmeter_ver1.2
Web service performance_test_using_jmeter_ver1.2Web service performance_test_using_jmeter_ver1.2
Web service performance_test_using_jmeter_ver1.2중선 곽
 
Why OpenStack is Operating System?
Why OpenStack is Operating System?Why OpenStack is Operating System?
Why OpenStack is Operating System?유명환 FunFun Yoo
 
프로그래밍 방식의 변천 과정
프로그래밍 방식의 변천 과정프로그래밍 방식의 변천 과정
프로그래밍 방식의 변천 과정중선 곽
 
자바 직렬화 (Java serialization)
자바 직렬화 (Java serialization)자바 직렬화 (Java serialization)
자바 직렬화 (Java serialization)중선 곽
 
문돌이가 가르치는 웹 프론트엔드 1차시
문돌이가 가르치는 웹 프론트엔드 1차시문돌이가 가르치는 웹 프론트엔드 1차시
문돌이가 가르치는 웹 프론트엔드 1차시동현 조
 

Viewers also liked (20)

Tomcat monitoring using_javamelody
Tomcat monitoring using_javamelodyTomcat monitoring using_javamelody
Tomcat monitoring using_javamelody
 
우분투 한국 커뮤니티 나눔모임 발표 2013-02-23
우분투 한국 커뮤니티 나눔모임 발표 2013-02-23우분투 한국 커뮤니티 나눔모임 발표 2013-02-23
우분투 한국 커뮤니티 나눔모임 발표 2013-02-23
 
Security framework2
Security framework2Security framework2
Security framework2
 
[제5회 KCD] 한국에서 커뮤니티를 운영한다는 건...
[제5회 KCD] 한국에서 커뮤니티를 운영한다는 건...[제5회 KCD] 한국에서 커뮤니티를 운영한다는 건...
[제5회 KCD] 한국에서 커뮤니티를 운영한다는 건...
 
Hello std.io 유명환_20140125
Hello std.io 유명환_20140125Hello std.io 유명환_20140125
Hello std.io 유명환_20140125
 
창조경제 IoT 해커톤 교육 2일차 교육 자료
창조경제 IoT 해커톤 교육 2일차 교육 자료창조경제 IoT 해커톤 교육 2일차 교육 자료
창조경제 IoT 해커톤 교육 2일차 교육 자료
 
문돌이가 가르치는 웹 프론트엔드 기초 2차시
문돌이가 가르치는 웹 프론트엔드 기초 2차시문돌이가 가르치는 웹 프론트엔드 기초 2차시
문돌이가 가르치는 웹 프론트엔드 기초 2차시
 
Intranet query tuning (example)
Intranet query tuning (example)Intranet query tuning (example)
Intranet query tuning (example)
 
[Codebakery 일반동아리] IoT의 개념 및 분야, 전망
[Codebakery 일반동아리] IoT의 개념 및 분야, 전망[Codebakery 일반동아리] IoT의 개념 및 분야, 전망
[Codebakery 일반동아리] IoT의 개념 및 분야, 전망
 
사칙연산 프로그램
사칙연산 프로그램사칙연산 프로그램
사칙연산 프로그램
 
Online service 계층별 성능 모니터링 방안
Online service 계층별 성능 모니터링 방안Online service 계층별 성능 모니터링 방안
Online service 계층별 성능 모니터링 방안
 
Scale up and scale out
Scale up and scale outScale up and scale out
Scale up and scale out
 
숫자 구분자 처리 (Digit group separators)
숫자 구분자 처리 (Digit group separators)숫자 구분자 처리 (Digit group separators)
숫자 구분자 처리 (Digit group separators)
 
Java 개발자가 하드웨어를 만나게 된다면??
Java 개발자가 하드웨어를 만나게 된다면??Java 개발자가 하드웨어를 만나게 된다면??
Java 개발자가 하드웨어를 만나게 된다면??
 
서버 아키텍쳐 입문
서버 아키텍쳐 입문서버 아키텍쳐 입문
서버 아키텍쳐 입문
 
Web service performance_test_using_jmeter_ver1.2
Web service performance_test_using_jmeter_ver1.2Web service performance_test_using_jmeter_ver1.2
Web service performance_test_using_jmeter_ver1.2
 
Why OpenStack is Operating System?
Why OpenStack is Operating System?Why OpenStack is Operating System?
Why OpenStack is Operating System?
 
프로그래밍 방식의 변천 과정
프로그래밍 방식의 변천 과정프로그래밍 방식의 변천 과정
프로그래밍 방식의 변천 과정
 
자바 직렬화 (Java serialization)
자바 직렬화 (Java serialization)자바 직렬화 (Java serialization)
자바 직렬화 (Java serialization)
 
문돌이가 가르치는 웹 프론트엔드 1차시
문돌이가 가르치는 웹 프론트엔드 1차시문돌이가 가르치는 웹 프론트엔드 1차시
문돌이가 가르치는 웹 프론트엔드 1차시
 

Similar to 운영체제 인트로

실무로 배우는 시스템 성능 최적화 Ch8
실무로 배우는 시스템 성능 최적화 Ch8실무로 배우는 시스템 성능 최적화 Ch8
실무로 배우는 시스템 성능 최적화 Ch8HyeonSeok Choi
 
Process (프로세스의 개념, 특징, 정의)
Process (프로세스의 개념, 특징, 정의)Process (프로세스의 개념, 특징, 정의)
Process (프로세스의 개념, 특징, 정의)ssuserd5354e
 
실무로 배우는 시스템 성능 최적화 8부 - 1,2,3장
실무로 배우는 시스템 성능 최적화 8부 - 1,2,3장실무로 배우는 시스템 성능 최적화 8부 - 1,2,3장
실무로 배우는 시스템 성능 최적화 8부 - 1,2,3장Sunggon Song
 
33기 여채린 "리눅스에 대한 소개"
33기 여채린 "리눅스에 대한 소개"33기 여채린 "리눅스에 대한 소개"
33기 여채린 "리눅스에 대한 소개"hyu_jaram
 
(120128) #fitalk sql server anti-forensics
(120128) #fitalk   sql server anti-forensics(120128) #fitalk   sql server anti-forensics
(120128) #fitalk sql server anti-forensicsINSIGHT FORENSIC
 
Linux 강의자료 ed10
Linux 강의자료 ed10Linux 강의자료 ed10
Linux 강의자료 ed10hungrok
 
20100407 이규철 digital archiving
20100407 이규철 digital archiving20100407 이규철 digital archiving
20100407 이규철 digital archivingglorykim
 
150625 마이크로커널 운영체제 김지은
150625 마이크로커널 운영체제 김지은150625 마이크로커널 운영체제 김지은
150625 마이크로커널 운영체제 김지은jieun kim
 
DeView2013 Big Data Platform Architecture with Hadoop - Hyeong-jun Kim
DeView2013 Big Data Platform Architecture with Hadoop - Hyeong-jun KimDeView2013 Big Data Platform Architecture with Hadoop - Hyeong-jun Kim
DeView2013 Big Data Platform Architecture with Hadoop - Hyeong-jun KimGruter
 
20170908 tech day-9th-재미없는 java runtime process 디버그-김성중
20170908 tech day-9th-재미없는 java runtime process 디버그-김성중20170908 tech day-9th-재미없는 java runtime process 디버그-김성중
20170908 tech day-9th-재미없는 java runtime process 디버그-김성중ymtech
 
caanoo Device driver
caanoo Device drivercaanoo Device driver
caanoo Device driverjumiss
 
Process에 대한 이해
Process에 대한 이해Process에 대한 이해
Process에 대한 이해Wonjun Hwang
 
네오문서도면관리솔루션소개서
네오문서도면관리솔루션소개서네오문서도면관리솔루션소개서
네오문서도면관리솔루션소개서bna2015
 

Similar to 운영체제 인트로 (20)

실무로 배우는 시스템 성능 최적화 Ch8
실무로 배우는 시스템 성능 최적화 Ch8실무로 배우는 시스템 성능 최적화 Ch8
실무로 배우는 시스템 성능 최적화 Ch8
 
System+os study 1
System+os study 1System+os study 1
System+os study 1
 
Process (프로세스의 개념, 특징, 정의)
Process (프로세스의 개념, 특징, 정의)Process (프로세스의 개념, 특징, 정의)
Process (프로세스의 개념, 특징, 정의)
 
실무로 배우는 시스템 성능 최적화 8부 - 1,2,3장
실무로 배우는 시스템 성능 최적화 8부 - 1,2,3장실무로 배우는 시스템 성능 최적화 8부 - 1,2,3장
실무로 배우는 시스템 성능 최적화 8부 - 1,2,3장
 
33기 여채린 "리눅스에 대한 소개"
33기 여채린 "리눅스에 대한 소개"33기 여채린 "리눅스에 대한 소개"
33기 여채린 "리눅스에 대한 소개"
 
Process and Thread
Process and ThreadProcess and Thread
Process and Thread
 
(120128) #fitalk sql server anti-forensics
(120128) #fitalk   sql server anti-forensics(120128) #fitalk   sql server anti-forensics
(120128) #fitalk sql server anti-forensics
 
시큐어디스크 ECM
시큐어디스크 ECM시큐어디스크 ECM
시큐어디스크 ECM
 
Linux 강의자료 ed10
Linux 강의자료 ed10Linux 강의자료 ed10
Linux 강의자료 ed10
 
20100407 이규철 digital archiving
20100407 이규철 digital archiving20100407 이규철 digital archiving
20100407 이규철 digital archiving
 
150625 마이크로커널 운영체제 김지은
150625 마이크로커널 운영체제 김지은150625 마이크로커널 운영체제 김지은
150625 마이크로커널 운영체제 김지은
 
DeView2013 Big Data Platform Architecture with Hadoop - Hyeong-jun Kim
DeView2013 Big Data Platform Architecture with Hadoop - Hyeong-jun KimDeView2013 Big Data Platform Architecture with Hadoop - Hyeong-jun Kim
DeView2013 Big Data Platform Architecture with Hadoop - Hyeong-jun Kim
 
Glances
GlancesGlances
Glances
 
20170908 tech day-9th-재미없는 java runtime process 디버그-김성중
20170908 tech day-9th-재미없는 java runtime process 디버그-김성중20170908 tech day-9th-재미없는 java runtime process 디버그-김성중
20170908 tech day-9th-재미없는 java runtime process 디버그-김성중
 
System+os study 3
System+os study 3System+os study 3
System+os study 3
 
저장장치
저장장치저장장치
저장장치
 
caanoo Device driver
caanoo Device drivercaanoo Device driver
caanoo Device driver
 
Process에 대한 이해
Process에 대한 이해Process에 대한 이해
Process에 대한 이해
 
네오문서도면관리솔루션소개서
네오문서도면관리솔루션소개서네오문서도면관리솔루션소개서
네오문서도면관리솔루션소개서
 
Lightning Talk 10
Lightning Talk 10Lightning Talk 10
Lightning Talk 10
 

운영체제 인트로

  • 2. 목차 • 운영체제의 정의 • 운영체제의 역할 ◦ 프로세스 관리 ◦ 메모리 관리 ◦ 저장장치 관리 ◦ 보호와 보안
  • 3. • 리눅스에서 다양한 개발 도구 프로그램을 사용하여 소프트웨어를 작성할 수 있다. • 운영체제의 역할과 기본 동작을 이해하고, 응용 프로그래밍 인터페이스를 이용할 수 있다 • 파일 시스템의 개념을 이해하고 파일 입출력 프로그래밍을 할 수 있다. • 프로세스와 쓰레드의 개념을 이해하고 관련 API를 이용하여 프로그램을 작성할 수 있다. • 동기화를 통한 병행 제어의 개념을 이해하고 동기화와 데드락 방지 프로그래밍을 할 수 있 • 가상 메모리의 개념과 메모리 관리 기술을 이해하고, 동적메모리 할당과 메모리 조작 프로그래밍을 할 수 있다. 학습 목표
  • 4. • 하드웨어 (Hardware) ◦ 기본적인 컴퓨팅 자원을 제공 (CPU, memory, I/O devices) • 운영체제 ( Operating system) ◦ 다양한 응용 프로그램과 사용자들 사이에서 하드웨어의 사용을 제어하고 조정한다. • 응용 프로그램 (Application programs) ◦ 사용자의 문제를 해결하기 위해 시스템 자원을 사용하는 방법을 정의한다. ◦ ex) Word processors, compilers, web browsers, database systems, video games • 사용자 (Users) ◦ People, machines, other computers 컴퓨터 시스템의 구성
  • 5. 컴퓨터 시스템의 하드웨어 구성 • 컴퓨터 시스템 ◦ 하나 이상의 CPU와 장치 제어기(device controller)가 공유 메모리를 접근할 수 있는 공통 버스(bus)에 연결 ◦ CPU와 장치 제어기는 메모리에 접근하기 위해 경쟁하면서 병행적으로 실행(concurrent execution)
  • 6. 운영체제란? • 컴퓨터 하드웨어와 사용자 사이의 중재 역할을 수행하는 프로그램이다. ◦ 프로그램을 실행하고 문제를 쉽게 해결해준다. ◦ 컴퓨터 시스템을 편리하게 사용할 수 있도록 해준다. ◦ 컴퓨터 하드웨어를 효율적으로 이용하도록 해준다. 유저 애플리케이 션 운영체제 하드웨어
  • 7. 운영체제란? • 컴퓨터 시스템을 추상화하여 프로그램과 사용자에게 제공한다. CPU 메모리 저장장 치 (HDD) 프로세 스 가상메 모리 파일
  • 8. 운영체제의 정의 • 자원 할당자 (resource allocator) ◦ 하드웨어 자원을 관리하여 효율적이고 공정하게 사용 요청을 처리한다. • 제어 프로그램 (control program) ◦ 에러와 적합하지 않은 컴퓨터 사용을 방지하면서 프로그램을 실행한다. • 컴퓨터에서 항상 실행되는 하나의 프로그램 (커널, kernel) ◦ cf.) 시스템 프로그램, 응용 프로그램
  • 9. 운영체제의 핵심기능 • 다중 프로그래밍 (Multiprogramming) ◦ CPU와 자원의 이용률(utilization)을 향상시켜준다. ◦ CPU가 항상 동작하도록 작업(job, 코드와 데이터)을 배치한다. ◦ 모든 작업 중에서 일부가 메모리에 적재되며 작업 스케줄링 (job scheduling)에 의해 실행될 작업을 선택한다. • 시분할 (Time-Sharing) - 멀티태스킹(multitasking) ◦ 사용자가 실행 중인 작업과 상호작용이 가능하도록 CPU가 작업을 매우 빈번하게 교체 실행한다. (interactive computing) ◦ 응답시간(response time)이 1초 미만 ◦ 각 사용자는 하나 이상의 프로그램을 메모리에서 실행한다. (process) ◦ 실행 대기 중인 여러 개의 작업을 CPU 스케줄링으로 처리한다. ◦ 스와핑(swapping)과 가상 메모리(virtual memory) 기술을 이용한다.
  • 10. 운영체제의 역할 • 프로세스 관리 (Process Management) • 메모리 관리 (Memory Management) • 저장장치 관리 (Storage Management) ◦ 파일 시스템 (File system) ◦ 대용량 저장장치 (Secondary Storage) • 입출력 시스템(I/O System) • 보호와 보안 (Protection & Security) • 네트워킹 (Networking)
  • 11. 프로세스 관리 • 프로세스 (Process): 실행중인 프로그램 ◦ 프로그램: 오떤 목적을 위한 명령어의 집합 (파일)으로써 수동적 개체이다. ◦ 프로세스: 순차적으로 실행되는 능동적 개체이다. • 프로세스가 작업을 완료하기 위해 필요한 자원 ◦ 프로세스가 시작될 때 혹은 실행 중에 할당 ◦ CPU, 메모리, 파일, 입출력장치 ◦ 초기 데이터 • 병행 실행(Concurrency) ◦ 다수 개의 프로세스를 하나의 CPU 상에서 멀티플렉싱(multiplexing)하여 처리한다.
  • 12. 프로세스 관리 • 운영체제의 프로세스 관리 기능 ◦ CPU에 대해 여러 프로세스와 쓰레드(thread)의 스케줄링 ◦ 사용자 및 시스템 프로세스의 생성과 제거 ◦ 프로세스의 일시 중지(suspend)와 재실행(resume) ◦ 프로세스 동기화를 위한 기법 제공 ◦ 프로세스 간 통신을 위한 기법 제공 ◦ 교착상태(deadlock)를 처리하기 위한 기법 제공
  • 13. 메모리 관리 • 폰 노이만 (Von Neumann) 방식 컴퓨터 ◦ 모든 명령과 데이터는 실행과 처리를 위해 메모리 상에 존재해야 한다. ◦ 메모리는 CPU가 직접 접근할 수 있는 유일한 저장장치이다. ◦ 메모리는 워드(word) 혹은 바이트(byte)의 큰 배열이며, 각각은 주소(address)에 의해 식별된다. Input Device Output Device Central Processing Unit Control Unit Arithmetic /Logic Unit Memory Unit
  • 14. 메모리 관리 • 메모리 관리 ◦ 어떤 프로세스와 데이터를 메모리에 적재할 지를 결정한다. ◦ 목적: CPU 사용률(utilization)과 사용자에 대한 응답시간을 최적화한다. • 운영체제의 메모리 관리 기능 ◦ 메모리의 어느 부분이 현재 누구에 의해 사용되는지 추적한다. ◦ 어떤 프로세스와 데이터가 메모리에 적재하고 제거될 지 결정한다. ◦ 메모리 공간을 할당(allocation)하고 회수한다. ◦ 프로세스에게 가상 메모리 공간을 제공한다.
  • 15. 저장장치 관리 • 운영체제의 역할 ◦ 저장장치의 물리적 특성을 추상화(abstraction)하여 논리적 저장 단위인 파일(file)로 제
  • 16. 저장장치 관리 • 파일 시스템 (File System) ◦ 파일(file): 파일생성자에 의해 정의된 관련 정보의 집합체이다. 프로그램과 데이터를 표현하고, 비트/바이트/라인/레코드들의 연속이다. ◦ 디렉토리(directory): 파일관리를 용이하게 하기 위한 정보이다. ◦ 파일 접근 제어: 누가 어떤 파일에 접근할 수 있는지를 결정한다. • 운영체제의 파일 시스템 관리 기능 ◦ 파일 및 디렉토리의 생성과 제거 ◦ 파일 및 데릭토리를 조작하기 위한 프리미티브(primitive) 제공 ◦ 파일을 보조 저장장치(Secondary storage)로 사상(mapping) ◦ 안정적인 (비휘발성) 저장 매체에 파일을 백업
  • 17. 대용량 저장장치 관리 • 보조 저장장치 (Secondary Storage) ◦ 다량의 프로그램과 데이터를 장기간 보관하기 위한 저장장치 ◦ 주로 디스크 장치가 사용된다. (HDD, SDD) ◦ CPU 및 메모리와의 성능 차이가 매우 크기 때문에, 컴퓨터 시스템 전체의 성능에 중요 부분을 차지한다. (병목 현상) • 운영체제의 대용량 저장장치 관리 기능 ◦ 자유 공간 (free-space) 관리 ◦ 저장 공간 할당 (allocation) ◦ 디스크 스케줄링
  • 18. 저장장치의 계층과 캐싱 • 캐싱 (caching) ◦ 낮은 단계 저장장치에 저장된 많은 정보를 높은 단계 저장장치가 제공하는 빠른 속도로 ◦ 낮은 단계 저장장치에서 자주 접근되는 일부의 정보를 높은 단계 저장장치에 저장 (Caching)
  • 19. 입출력 시스템 • 운영체제의 역할 ◦ 하드웨어 장치의 고유한 특성을 사용자에게 숨긴다. ex) keyboard, mouse, monitor, network adaptor, etc • 운영체제의 입출력 시스템 관리 기능 ◦ 다양한 입출력 장치의 설치 및 제거 ◦ 버퍼링, 캐싱, 스풀링을 포함한 입출력의 메모리 관리 ◦ 범용 및 특수 장치 드라이버 인터페이스 (I/O System)
  • 20. 보호와 보안 • 보호 (Protection) ◦ 운영체제가 정의한 자원에 대해 프로세스나 사용자의 접근을 제어한다. • 보안 (Security) ◦ 내부 또는 외부의 공격으로부터 시스템을 방어하는 기능 ◦ 공격의 예: DOS(denial-of-service), worms, viruses, identity theft, theft of service • 사용자 식별 ◦ 누가 무엇을 할 수 있는지 결정하기 위한 수단 ◦ 사용자 ID(보안 ID)를 모든 파일과 프로세스에 적용하여 해당 사용자의 접근을 제어한 ◦ 그룹 ID를 이용하여 다수의 사용자 접근 제어를 한번에 처리한다.

Editor's Notes

  1. 컴퓨터 시스템은 일반적으로 하드웨어와 소프트웨어로 구성되어 있다. 즉 프로그램이라고 하는 소프트웨어가 CPU, 메모리 등으로 구성되어있는 하드웨어에서 동작함으로써 사용자가 원하는 기능을 수행하는 것이 컴퓨터 시스템이라는 것이다. 여기서 소프트웨어는 다시 한번 운영체제와 응용 프로그램으로 나뉠 수 있다. 응용 프로그램은 우리가 흔히 알고 있는 워드프로세서, 웹 브라우저와 같이 직접적인 사용자의 요구사항들을 들어주는 프로그램이다. 이러한 응용 프로그램이 컴퓨터 하드웨어에서 잘 동작하도록 도와주는 소프트웨어가 바로 운영체제이다. 그리고 여기에 컴퓨터를 이용하는 사용자까지 추가해서 컴퓨터 시스템이라고 이야기할 수 있다.
  2. 운영체제를 잘 이해하기 위해서는 컴퓨터 하드웨어의 구성이나 하드웨어의 동작원리를 이해할 필요가 있다. 그림은 컴퓨터 하드웨어를 간단히 보여주는 것인데, 하드웨어는 CPU와 메모리, 그리고 다양한 IO장치로 구성되어있다. 소프트웨어는 메모리 상에 존재하고, CPU를 이용하면서 자기가 실행하고자 하는 일을 수행한다. 운영체제라는 것은 그런 소프트웨어가 잘 동작할 수 있도록 CPU와 메모리 그리고 다양한 IO장치들을 잘, 효과적으로 관리하고 사용자에게 편리하게 제공하는 것이 운영체제라고 할 수 있다.
  3. 운영체제를 한 문장으로 정의한다면, 운영체제는 컴퓨터 하드웨어와 사용자 또는 프로그램 사이의 중재 역할을 하는 프로그램이라고 할 수 있다. 앞장의 구성에서 본 것처럼 운영체제는 하드웨어와 소프트웨어 사이에 존재하면서 프로그램이 쉽게 실행할 수 있도록 하고, 사용자가 좀 더 컴퓨터를 편리하게 사용할 수 있고, 복잡한 하드웨어의 자원을 효율적으로 관리해서 프로그램들이 실행될 수 있도록 하는 것이 운영체제이다.
  4. 운영체제는 이런 중재자 역할을 어떻게 하는지 간단히 나타내는 도식이다. 여기서 핵심은 ‘추상화’ 이다. 운영체제가 중재자 역할을 하긴 하지만, 어떤 방식으로 하느냐 하면 ‘추상화’한다고 표현할 수 있다. CPU 메모리 저장장치와 같은 하드웨어를 사용자나 프로그램이 직접 접근하고 이용하기에는 복잡하고 너무 어렵다. 그래서 이것을 운영체제가 프로세스, 가상메모리, 파일이라는 개념으로 제공함으로써 프로그램과 사용자가 보다 쉽고 편리하게 이용할 수 있게 하는 것이다. 앞으로 배우게 될 운영체제의 개념들은 바로 이런 추상화방식 프로세스가 무엇인지, 파일이 무엇인지를 배워가는 것이라 할 수 있다.
  5. 이런식으로 하드웨어와 프로그램 사이의 중재자 역할을 하는 운영체제를 자원관리자 혹은 제어프로그램이라는 2가지 용어로 정의해볼 수 있다. 이러한 정의 용어는 절대적인 것은 아니고, 보통 운영체제 교재에서 사용하고 있는 용어이다. 즉, 컴퓨터 하드웨어를 추상화하여 제공함으로써 중재자 역할을 하는데, 그 기능을 한마디로 자원의 할당자라고 이야기할 수 있다. 앞으로 우리는 컴퓨터 하드웨어라는 것을 자원이라고 표현할 것이다. CPU, 메모리, 저장장치, 네트워크 장치와 같은 것들을 자원이라고 이야기할 것이다. 그런 자원을 어떻게 잘 관리를 해서 소프트웨어가 사용할 수 있도록 할당해주느냐, 바로 이것이 중재자 역할이라는 것이다. 그래서 좀 더 컴퓨터에 가까운 용어로 정의 했을 때 운영체제는 ‘자원의 할당자’라고 이야기할 수 있다. 그리고 운영체제는 여러 개의 소프트웨어들이 잘 동작할 수 있도록 관리해야 한다. 하드웨어를 할당해서 소프트웨어가 동작함과 동시에 여러개의 소프트웨어들이 충돌이 나거나 에러가 났을 때, 심각한 문제가 발생하지 않도록 프로그램 사이, 프로그램과 운영체제 사이에서의 원활한 제어가 필요하다. 그것을 도와주는 것이 바로 운영체제이다. 그래서 제어프로그램이라고도 한다. 즉 운영체제는 하드웨어를 추상화해서 프로그램이나 사용자의 중재자 역할을 하는데, 그것을 한마디로 하면 자원의 할당자 또는 제어프로그램이라고 할 수 있다. 그리고 운영체제 역시 하나의 소프트웨어 프로그램이므로, 그런 관점에서 정의했을 때는, 컴퓨터에서 항상 실행되는 하나의 프로그램이다라고 할 수 있다. 일반적인 프로그램은 자기의 할일이 필요할 때 실행이 시작되고, 할일이 끝나면 실행을 종료한다. 그런데 운영체제는 모든 프로그램들이 어떤 일을 하기 위해서 반드시 필요한 도움을 줘야만 하는 프로그램이기 때문에, 컴퓨터에 전원이 들어와서 끝날 때까지 항상 실행되는 프로그램이라고 이야기할 수 있다. 그런 관점에서 우리는 운영체제를 커널이라고 이야기한다. 이러한 용어들은 앞으로 운영체제를 공부하면서 자주 접하게 될 것이다.
  6. 앞장에서와 같은 운영체제의 정의에 해당하는 목적을 잘 달성하기 위해서, 운영체제는 다양한 기능을 수행해야 한다. 그 중 핵심적인 기능은 바로 프로그램을 실행시키는 것이다. 최근의 컴퓨터는 성능이 매우 높아지고 사용자들의 요구사항도 복잡해지고 있다. 그래서 그런 자우너을 효과적으로 이용하고 사용자들의 복잡한 기능을 다양하게 잘 들어주기 위해서 운영체제는 한번에 여러개의 프로그램들을 실행시킬 수 있어야 한다. 즉 우리가 문서를 편집하면서도, 동시에 음악을 들을 수 있고, 동시에 웹브라우징도 즐길 수 있어야 한다. 이런 것을 하도록 도와주는 것이 운영체제의 ‘다중 프로그래밍 기능’이라고 할 수 있다. 이 때 중요한 것은 한번에 여러개의 프로그램들이 동시에 진행되는 것처럼 해줘야 한다는 것이다. 즉 문서 편집기가 끝나고, 음악재생이 시작된다거나, 음악재생기가 끝나고 나서야 웹브라우징이 실행된다면 우리는 3개의 프로그램이 동시에 진행된다고 느낄 수 없을 것이다. 즉 사용자 입장에서는 동시에 여러개의 프로그램들이 실행되도록 하는 것이 다중 프로그래밍에서의 핵심이 되는데, 우리는 그것을 멀티태스킹이라고 한다. 이 때 중요한 것은 응답시간이다. 내가 어떤 프로그램에 입력을 줬을 때, 그것에 대한 반응이 얼마나 빨리오는가, 바로 이것이 중요하고 매우 짧게 되야한다는 것이다. 하나밖에 없는 CPU를 이용해서 여러개의 프로그램들이 똑같이 빠른 응답시간을 가지기 위해서는 끝날때까지 기다리는게 아니라 시분할이라는 개념으로 CPU의 시간을 잘게 쪼개서 매우 빈번하게 교체해서 실행하는 방식을 채택하고 있다. 사실 이것이 그리 간단한 방법은 아니어서, 이 작업을 문제없이 수행하기 위해서는 매우 복잡한 운영체제의 기능들이 같이 수행되어야만 한다. 그래서 이런 다중 프로그래밍 멀티태스킹이란 것이 운영체제의 가장 중요한 핵심기능이 되는 것이고, 앞으로 공부하게 될 운영체제의 여러가지 구성과 내용들은 이런 다중프로그래밍 멀티태스킹을 아무 문제 없이 잘 이루어지게 하는 것이다.
  7. 전 슬라이드에서 나타난 핵심기능을 포함해서 운영체제는 보다 더 다양한 역할을 수행한다. 슬라이드에 나와있는 6가지가 그것들인데, 운영체제를 공부하는 세부 학습내용이라고 할 수 있다. 또한 이것들 하나하나는 하드웨어의 장치들과 모두 연관되어있다. 먼저 프로세스 관리는 CPU에 연관되는 것이고, 또 프로그램을 실행시키는 것에 관련된다. 프로그램을 실행시켯을 때 그 모습을 우리는 프로세스라고 이야기하는데, 운영체제를 공부하면서 자주 등장하게 된다. 따라서 프로세스를 잘 실행시키고 관리해주기 위해서 어떤 자원이 할당 될 것인지, 여러개의 프로세스가 동시에 실행되기 위해서는 어떠한 방법이 필요한지, 또 그것이 문제없이 원활하게 잘 동작하기 위해서는 어떤 기능들을 수행해야 하는 것인지와 같은 것들이 프로세스 관리기능에 해당한다. 다음은 메모리와 관련된 것이다.
  8. 다음은 메모리와 관련된 것인데, 컴퓨터 시스템에서 프로그램은 메모리 위에 적재되어야 하고, 메모리 위에서 CPU를 사용하게 된다. 그래서 메모리도 CPU 못지 많게 매우 중요한 자원이 되고, 그것을 잘 관리하는 것이 운영체제의 중요한 임무가 된다. 어떤 프로세스에게 어떤 메모리를 어떤 방식으로 할당해주고 거둘 것인지, 그리고 메모리라는 것을 프로세스에게 어떤 방식으로 제공하는지와 같은 부분을 공부하는게 메모리 관리 부분이 된다,
  9. 다음은 저장장치 관리가 되는데, 우리가 프로그램을 메모리에 올리고 CPU에서 실행시키긴 하지만 아주 다양하고 많은 프로그램을 실행해야하고 또 그 프로그램들은 많은 데이터들을 이용해서 실행해야 한다. 이를 위해서는 메모리만 가지고는 원하는 프로그램을 다 수용할 수 없기 때문에, 어딘가에 저장해야 한다. 그래서 컴퓨터 시스템은 그런 저장개념이 제공되어야 하고 대부분의 컴퓨터 시스템 운영체제는 그것을 파일 형태로 제공해주고 있다. 그래서 운영체제는 파일 시스템의 개념을 구현해 기능을 수행합니다. 우리는 보통 파일과 디렉토리 개념으로 이해를 하고 있기 때문에, 운영체제가 파일과 디렉토리를 어떻게 생성할 것이며 어디에 어떻게 저장할 것인지에 대한 관리가 필요하다.
  10. 다음으로 운영체제는 그런 파일들이 어떤 저장장치에 저장될 것인가를 관리해야한다. 대용량 저장장치는 우리가 알고 있는 하드디스크에 해당되는 것인데, 최근에는 SSD라는 저장장치도 많이 사용되고 있다. 그런 저장장치에 데이터를 어떻게 저장하고 읽어올 것인가에 대한 방법도 운영체제가 제공해야 한다. 즉 하드디스크 자체는 파일이란 개념이 없어 광활한 저장창고일뿐이다. 거기에 어떻게 공간을 할당받아서 어떻게 저장할 것인가, 그리고 디스크라는 장치에서 어떤 순서대로 정보를 읽어와서 파일로 구성해줄 것인가 하는 것도 운영체제가 관리를 해야합니다.
  11. 앞 슬라이드에서 이야기한 메모리와 저장장치 전반에 걸쳐서 나오는 중요한 개념으로써 운영체제는 캐싱이라는 개념을 가지고 있다. 컴퓨터 시스템에서 저장에 대한 가장 이상적인 요구사항은 아주 많은 데이터를 아주 빠르게 저장하거나 읽어올 수 있는 것이다. 그러나 불행하게도 현대의 저장장치나 메모리들은 메모리 크기가 크면 클수록 느리게 되는 특성이 있다. 그것들을 가상적으로 계층구조로 묶어서 우리가 아주 빠른 저장장치에서 많은 데이터를 이용할 수 있도록 해주는 것이 캐싱이라는 개념이다. 우리가 흔히 알고 있는 CPU에 붙어있는 캐시메모리라는 것, 우리가 인터넷 웹브라우징할 때 버퍼링이라는 것. 이런 것들이 대부분 그와 상통하는 개념이 된다. 그래서 이 저장장치 혹은 메모리에 계층구조라는 개념과 캐싱이라는 개념은 컴퓨터 시스템을 이해하는 데 있어 꽤 중요한 용어가 된다.
  12. 컴퓨터 시스템의 구성을 CPU, 메모리 그리고 다양한 입출력장치라고 하였다. 그 중 아주 특별한 입출력 장치를 따로 이야기 했고 그 외에 키보드, 마우스, 네트워크 장치 등을 컴퓨터 시스템에서는 입력/출력 장치라고 한다. 그래서 이것들을 통해 사용자의 입력, 멀리 있는 네트워크에서 떨어져 있는 어떤 컴퓨터의 입력, 출력 등을 어떤 방식으로 관리해 줄 것인가 하는 것도 운영체제의 중요한 역할이 된다.
  13. 보호라는 것은 운영체제의 정의에서 제어 프로그램에 해당하는 부분이 된다. 즉 운영체제에서 실행되는 여러 프로세스들이 서로간에 충도리 없이 동작을 해야한다는 의미이다. 다른 프로그램이 사용하는 자원을 또 다른 프로그램이 함부로 사용할 수 없게 한다든가, 또는 운영체제가 관리하고 있는 시스템 자원을 사용자 프로그램이 함부로 사용할 수 없게 접근을 제어하는 것과 같은 기능이 보호에 해당한다. 그리고 우리가 흔히 알 고 있는 해킹, 즉 외부에서 이 컴퓨터 시스템에 함부로 들어오는 것 그것을 막는게 보안에 해당한다. 그래서 운영체제에는 보안에 해당하는 기능을 통해 외부에서 또는 내부의 어떤 문제가 되는 프로그램이 시스템을 해치는 것을 방어하는 기능을 수행해야 한다. 그래서 이러한 기능들도 운영체제의 중요한 기능이 되는 것이다. 이 기능의 가장 근본적인 원리는 사용자를 식별하는 것이라 할 수 있다. 즉 누가 어떤 프로그램을 사용할 수 있다라는 것을 잘 관리해야한다는 것이다.