운영체제: 컴퓨터 하드웨어를 효율적으로 관리
-> 성능↑ + 사용자에게 편의 제공하는 프로그램(S/W)
목표: covenience + performance
컴퓨터 시스템 구조
구성요소 4가지: 하드웨어/운영체제/응용프로그램/사용자
ㄴ하드웨어-기본적인 컴퓨팅 리소스(CPU, 메모리, I/O 장치)
ㄴ응용프로그램(워드 프로세서, 컴파일러, 웹 브라우저, 등)
#운영체제가 하는 일
*User View
: 사용되는 인터페이스에 따라 달라짐
-일반적인 사용자(PC)
: 사용자는 편리함 및 좋은 성능/ 자원 이용률에 관심X
-메인프레임 OR 미니컴퓨터에 연결된 터미널 사용자
: 자원 이용 극대화
-워크스테이션-서버 사용자
: 개인의 사용 편의성 + 자원 이용 적절한 조화
-휴대용 컴퓨터
: 전력 소모↓ + 사용의 편의성
-장치에 내장된 컴퓨터 OR 자동차에서 사용되는 일부 컴퓨터
*System View
-Resource allocator/manager
: 모든 자원 관리/ 효율과 공정한 자원 사용을 위한 결정
-Control program
: 컴퓨터의 잘못된 사용 OR 부적합한 사용 방지
#컴퓨터 시스템 구성
*Computer-System Operation
: 하나 이상의 CPU와 장치 제어기_공유 메모리 접근 <- 공통 버스로 연결
CPU와 장치는 병행 수행 -> 메모리 사용하기 위해 경쟁
컴퓨터 시작하기 위해
-POST(Power On-Self Test)
-Boot Loader(Booting Program)
ROM(Read-Only Memory) OR EPROM(Electrically Eraseable Programmable Rom)에 저장/ 펌웨어(firmware)라 불림
시스템의 모든 구성요소 초기화
운영체제 커널을 메모리에 적재 -> 커널 실행
시스템은 완전히 부트된 상태에서 대기(event 발생)
*Operating-System Structure
: 다중 프로그래밍_CPU가 항상 하나의 작업 수행할 수 있도록 함
여러 작업을 메모리에 적재/ 운영체제는 실행할 작업을 선택
if 실행 중인 작업이 무언가 기다려야 한다(ex. 입출력)
-> 운영체제는 다른 작업으로 전환
=> 실행할 작업이 최소 1개, CPU 쉬지X
시분할(Timesharing(multitasking))
: CPU가 빈번하게 다른 작업으로 전환하도록 논리적으로 확장한 것
-사용자 각 작업과 상호작용 + 대화식 컴퓨팅(interactive computing)환경제공
응답시간(Response time) < 1초
각 사용자는 메모리에 실행 중인 프로그램 적어도 1개 O -> 프로세스(process)
동시에 여러 작업 실행할 준비O -> CPU scheduling 스와핑(swapping)
가상메모리(Virtual memory)
*Interrupt
-By H/W
CPU 외부의 디스크 컨트롤러 OR 주변장치로부터 요구되는 것
운영체제의 처리를 요하는 상황 알리기 위해 전기적인 신호 사용
기계 검사 인터럽트
: 프로그램 실행 중 갑작스런 정전 OR 컴퓨터 자체 내 기계적인 문제 발생 경우
외부 인터럽트
: 오퍼레이터 OR 타이머에 의해 의도적으로 프로그램이 중단된 경우
입출력 인터럽트
: 입출력의 종료 OR 입출력의 오류에 의해 CPU의 기능이 요청된 경우
프로그램 검사 인터럽트
: 프로그램 실행 중 보호된 기억공간 내에 접근 OR 불법적인 명령 수행과 같은 프로그램의 문제가 발생한 경우
-By S/W = 트랩(trap) OR 예외(exception)
프로그램 실행 중 프로그램 상의 처리 불가능한 오류나 이벤트 알리기 위한 경우
ex. 존재X 메모리 주소에 접근/ 나눗셈에서 0으로 나누고자 하는 경우
인터럽트 서비스 루틴에게 제어권을 넘김
ㄴ종류별로 서비스 루틴 다름
/모든 서비스 루틴의 주소 저장O 자료구조: 인터럽트 벡터
인터럽트 아키텍처는 반드시 인터럽트 된 명령어의 주소를 저장해야 함
ㄴ복귀주소, 복귀 전의 CPU 상태 복원
운영체제는 인터럽트가 발생해야 작동을 시작하는 방식
ㄴinterrupt driven(=event driven)
*Operating-System Operations
현대 운영체제는 interrupt driven 방식
-소프트웨어 인터럽트(exception or trap)
소프트웨어 오류/ 운영체제 서비스 요청
ㄴe.g., division by zero, 무한 루프, 다른 프로세스. 운영체제 수정하려는 행위
-이중 모드(Dual-mode)
: 운영체제가 자기자신을 다른 시스템 구성요소로부터 보호하기 위한 장치
User mode and kernel mode
Mode bit <- 하드웨어
시스템이 사용자 코드 OR 커널 코드를 실행하고 있는지 구분
일부 명령어는 특권 명령어로 지정되어 있어 커널 모드에서만 실행O
-무한 루프, 프로세서 자원 독점을 방지하기 위한 타이머
: 일정 주기마다 컴퓨터에 인터럽트를 발생시키도록 타이머 세팅
물리적인 클럭에 의해 감소되는 카운터 유지
운영체제가 카운터 세팅 (특권 명령어)
카운터 -> 0 -> 인터럽트 발생
ㄴ제어권: 사용자 프로그램 -> 운영체제
*Storage Structures
-메인 메모리
: CPU가 직접 접근O 유일한 대용량 저장 매체
임의 접근(Random access)/ 보통 휘발성(volatile)
-보조 저장장치
: 대용량 비휘발성 저장 용량_메인 메모리의 확장
-하드 디스크
-반도체 디스크(Sollid-state disks)
: 고속 입출력 비휘발성 저장 매체/ 외부 충격에 강함, 작고 가벼움
저장장치 시스템 계층 구조 형성
: 속도(Speed)/비용(Cost)/ 휘발성 여부(Volatitly)
캐싱(Caching)
: 더 빠른 저장장치로 정보 복사하는 기법
/ 메인 메모리를 보조 저장장치
*Process Management
프로세스: 실행 중인 프로그램/ 시스템 안에서 작업의 단위
프로그램; 수동적 개체 vs 프로세스; 능동적 개체
자신의 업무 수행 -> 자원(CPU, 메모리, I/O, 파일, 초기화를 위한 데이터) 필요
명렁어 한 번에 하나씩 완료될 때까지 순차적 실행
종료될 때 재사용 가능 모든 자원 반환
-운영체제의 프로세스 관리
CPU 사용 위한 프로세스 OR 쓰레드 스케줄링
사용자와 시스템 프로세스 생성하고 제거
프로세스 일시중지 및 다시 시작
프로세스 간 동기화 할 수 있는 기법 제공
교착상태를 처리하기 위한 기법 제공
*Memory Management
메모리는 바이트의 대용량 배열, 각 바이트는 자신의 주소O
프로그램 실행에 필요한 데이터 전체 OR 일부 메모리에 있어야 함
-운영체제의 메모리 관리
프로세스에 의해 사용 중인 메모리 영역 추적
어느 프로세스(OR 일부)와 데이터를 메모리로 적재하거나 내보낼지 결정
필요에 따라 메모리 할당하고 반환
메모리 관리 기법 <- 하드웨어 설계
*Storage Management
물리적 특성 추상화 -> 논리적인 저장 단위 파일(file) 정의
ㄴ파일 생성자 -> 파일 정의/ 관련 정보 집합체/ 디렉토리 단위 구성
각 저장 매체 자신이 독특한 특성O
ㄴ접근 속도, 데이터 전송률, 접근 방식(순차 OR 임의) 등
-운영체제의 파일시스템 관리
파일과 디렉터리 생성과 삭제
파일과 디렉터리를 조작하기 위한 기본 기능 제공
파일을 보조 저장장치에 매핑
신뢰O (비휘발성) 저장장치에 파일 백업
비휘발성 대용량 데이터 디스크에 저장
-운영체제의 대용량 저장장치 관리
빈 공간 관리/ 저장장소 할당/ 디스크 스케줄링
-3차 저장 장치
optical storage, magnetic tape, USB etc.
ㄴWORM(write-once, read-many-times) and RW(read-write))
Mount and unmount 관리
*Protection and Security
-보호(Protection)
: 운영체제에서 정의한 리소스에 프로세스 OR 사용자가 액세스하는 것을 제어하는 모든 메커니즘
e.g., 메모리 주소 지정 하드웨어, 타이머 등
-보안(Security)
: 내부 및 외부 공격에 대한 시스템 방어
서비스 거부, 웜, 바이러스, 신분 도용, 서비스 절도 등
-운영체제의 보호와 보안 기법
사용자 식별자(사용자 ID, 보안 ID)에는 이름 및 연동된 번호O
+ 사용자 당 하나씩 할당
UNIX 경우, 파일마다 권한 허용 범위 설정O
그룹 식별자(그룹 ID) ~> 사용자 집합 정의 + 관리
권한 상승(privilege escalation)은 더 많은 권한 가진 유효 ID로 변경
*Computer-System Architecture
대부분 시스템 하나의 범용 CPU 사용
다중처리기(Multiprocessors) 시스템 사용 + 중요성↑
(= 병렬 시스템, 멀티코어 시스템)
장점; 처리량↑/ 규모의 경제/ 신뢰성↑_결함 허용
비대칭 다중처리: 각 처리기가 특별한 임무 수행
대칭 다중처리: 각 처리기가 공통적인 임무 수행
멀티 코어 디자인
최근 경향의 칩 형태/ 단일 코어를 여러 개 가진 칩보다 효율적
-클러스터 시스템(Clustered Systems)
: 둘 이상의 독자적 시스템 OR 노드들 연결
storage-area network(SAN) ~> 저장장치 공유
실패해도 지속O 고가용 서비스 제공_비대칭 클러스터링/ 대칭 클러스터링
일부 클러스터 고성능 컴퓨팅 환경 제공
ㄴ응용프로그램 병렬처리가 가능하도록 작성되어야 함
*Computing Environments
-Moblie computing(ex. 휴대용 스마트 폰, 태블릿) vs 전통적 컴퓨터 기능
GPS, 가속도계, 자이로스코프 등/ 위치 서비스를 이용한 앱, 증강 현실 앱 등
연결 위해 IEE 802.11 무선 OR 셀룰러 데이터 네트워크 사용
Apple IOS 및 Goolge Android
-Distributed Systems: 네트워크로 연결된 개별적인, 이기종 시스템 집합
네트워크; 통신 경로, TCP/IP를 가장 많이 사용
근거리 통신망(LAN)/ 광역 네트워크(WAN)
/ 대도시 지역 네트워크(MAN)/ 개인 영역 네트워크(RAN)
네트워크 운영체제(network operating system)
: 네트워크로 연결된 시스템 간의 기능 제공
시스템끼리 메시지 교환O 통신 체계/ 단일 시스템인 듯한 환상
-Client-Server Computing: 클라이언트가 생성한 요청에 서버
Compute-server 시스템
: 클라이언트에게 서비스(데이터베이스) 요청하기 위한 인터페이스 제공
파일 서버 시스템
: 클라이언트가 파일을 저장 및 검색할 수 있는 인터페이스 제공
-Peer-to-Peer Computing
P2P는 클라이언트와 서버 구분X 대신 모든 노드는 peer
각 peer는 클라이언트, 서버 OR 두 개의 역할
-Virtualization
운영체제가 다른 운영체제 내에서 하나의 응용처럼 실행될 수 있게 연구와 호환성 위해 랩톱 OR 데스크톱 컴퓨터에서 여러 운영체제 실행
광범위하게 사용 + 점점 성장하는 분야
VMM(virtual machine Manager)가 가상화 서비스 제공
-에뮬레이션(emulation)
-VMware
-Cloud Computing
: 컴퓨팅, 스토리지, 심지어 앱까지도 네트워크 통한 서비스로 제공O
가상화를 기능 기본으로 사용 -> 가상화의 논리적 확장
공중 클라우드(public cloud): 지불 할 의사O 누구나 인터넷 통해 이용O
사유 클라우드(private cloud): 회사 자체 사용 위해 회사에서 운영
Software as a Service(SaaS)
: 인터넷 통해 사용O 하나 이상의 응용 프로그램(ex. 워드 프로세서)
Platform as a Service(PaaS)
: 응용프로그램이 인터넷 통해 사용O 준비된 소프트웨어 스택(데이터베이스서버)
Infrastructure as a Service(IaaS)
: 인터넷 통해 사용O 서버 OR 저장장치(백업용으로 사용O 저장장치)
'Computer Science > 컴퓨터구조 | 운영체제' 카테고리의 다른 글
CH6. CPU Scheduling (0) | 2022.05.19 |
---|---|
CH5. Process Synchronization (0) | 2022.05.19 |
CH4. Threads (0) | 2022.05.19 |
CH3. Process (0) | 2022.05.19 |
CH2. Operating System Structures (0) | 2022.05.19 |