ggoggo
운영체제 : Ch 1.3 Storage Management 본문
Storage Structure
- Main memory : CPU가 직접 액세스할 수 있는 대용량 스토리지 미디어만 해당
- Random access
- 일반적으로 휘발성
- 일반적으로 DRAM(Dynamic Random-Access Memory) 형태의 랜덤 액세스 메모리
- Secondary Memory : 대용량 비휘발성 스토리지 용량을 제공하는 메인 메모리의 확장
- Hard Disk Drive(HDD) : 자기 기록 재료로 덮인 견고한 금속 또는 유리 플래터
- 디스크 표면은 논리적으로 섹터로 세분화된 트랙으로 나뉜다.
- 디스크 컨트롤러는 장치와 컴퓨터 사이의 논리적 상호 작용을 결정
- Non-volatile memory(NVM) : 하드디스크보다 빠름, 비휘발성
- 다양한 기술
- 용량과 성능이 증가, 가격이 하락함에 따라 인기 증가
Storage Hierarchy
- 계층 구조로 구성된 스토리지 시스템
- 속도
- 비용
- 변동성
- Caching : 정보를 더 빠른 스토리지 시스템으로 복사, 메인 메모리는 보조 스토리지용 캐시로 간주할 수 있다.
- Device Driver는 I/O를 관리하기 위한 각 장치 컨틀롤러를 위한 것이다.
- 컨트롤러와 커널 간에 균일한 인터페이스를 제공
Storage-Device Hierarchy
How a Modern Computer Works
Direct Memory Access Structure
- DMA
- 메모리 속도에 가까운 속도로 정보를 전송할 수 있는 고속 I/O 장치에 사용
- 장치 컨트롤러가 CPU 개입 없이 버퍼 스토리지에서 메인 메모리로 데이터 블록을 직접 전송
- 바이트 당 인터럽트 1개가 아닌 블록 당 인터럽트 1개만 생성
* 버퍼(buffer) : 컴퓨터의 주기억장치와 주변장치 사이에서 데이터를 주고 받을 때 정보를 임시로 기억해두고 사용할 수 있는 공간.
ex) 메인메모리 주소(30000부터)로 버퍼의 주소 10000~20000까지 전송하고자 한다.
이때 CPU를 이용하여 실행할 경우 PCU가 처리해야할 다른 일들이 수행되지 못한다.
따라서 DMA에 버퍼의 시작주소와 메인메모리의 시작주소와 1간격으로 전송할 것이라는 정보를 주고 CPU 대신 DMA가 수행하여 CPU가 다른 일을 수행할 수 있다.
Operating-System Operations
- Bootstrap program : 시스템을 초기화하고 커널을 로드하는 간단한 코드
- 커널 로드
* 커널 : 컴퓨터 운영 체제의 핵심이 되는 컴퓨터 프로그램으로, 시스템의 모든 것을 통제한다. 운영 체제의 다른 부분 및 응용 프로그램 수행에 필요한 여러가지 서비스를 제공한다.
- system daemons 시작 ( 커널 외부에서 제공되는 서비스, background로)
- 커널 인터럽트 기반 (하드웨어와 소프트웨어 )
- 장치중 하나로 인한 하드웨어 인터럽트
- 소프트웨어 인터럽트 ( exception or trap)
=> 소프트웨어 에러 ( 0으로 나누기)
=> 운영 체제 서비스 요청 - 시스템 호출
=> 다른 프로세스 문제로는 무한루프, 서로 또는 운영 체제를 수정하는 프로세스 등
Multiprogramming (Batch system)
- 단일 사용자가 CPU 및 I/O 장치를 항상 사용 상태로 유지할 수 없음
=> 입출력 작업의 종료를 대기할 동안 하나의 프로세서에서 다른 프로그램을 수행할 수 있다!!!!
- 멀티 프로그래밍은 작업(코드 및 데이터)을 구성하므로 CPU는 항상 작업(코드 및 데이터)을 실행
- 시스템에서 전체 작업의 하위 집합이 메모리에 유지됨
- 작업 스케줄링을 통해 하나의 작업 선택 및 실행
- 작업이 대기해야 하는 경우 OS가 다른 작업으로 전환됨 => cpu 쉬지 않음
Multitasking (Timesharing)
- Bath system의 논리적 확산 => CPU가 작업을 자주 전환하므로 사용자는 작업 실행 중에 각 작업과 상호 작용하여 대화형 컴퓨팅을 생성할 수 있다.!!
- 응답 시간은 1초 미만이어야 한다
- 각 사용하는 메모리에 실행 중인 하나 이상의 프로그램을 가지고 있다.
=> process
- 여러 작업을 동시에 실행할 준비가 된 경우 => CPU scheduling
- 프로세스가 메모리에 맞지 않는 경우 swap하면 프로세스가 실행되도록 안팎으로 이동
- 가상 메모리를 통해 완전히 메모리에 있지 않은 프로세스를 실행할 수 있음
Dual-mode Operation
- Dual-mode operation으로 OS가 자식과 다른 시스템 구성 요소를 보호 가능
- User mode / Kernel mode
- 하드웨서에서 제공하는 Mode bit
- 시스템이 사용자 코드 또는 커널 코드를 실행 중인지 구분할 수 있는 기능을 제공
- 사용자가 실행 중일 때 => mode bit 는 "user"
- 커널 코드가 실행 중일 때 => mode bit는 "kernel"
- 사용자가 mode bit를 "kernel"로 명시적으로 설정하지 않도록 어떻게 보장하지??
- system call이 mode를 커널로 변경하고 호출에서 반환이 모드를 사용자로 재설정
- 권한으로 지정된 일부 명령은 커널 모드에서만 실행 가능
Timer
- 무한루프를 (또는 프로세스 hogging resource)를 방지하기 위한 타이머 => 인터럽트의 일종
- 일정 시간 후 컴퓨터를 중단하도록 타이머 설정
- 실제 클럭만큼 감소된 카운터 유지
- 운영 체제가 카운터 설정(권한 지침)
- 카운터 0 이 인터럽트를 생성하면
=> 제어권을 회복하거나 할당된 시간을 초과한 프로그램을 종료하기 위해 예약 프로세스 전에 설정
Process Management
- 프로세스 : 실행 중인 프로그램. 시스템 내의 작업 단위
=> 프로그램 : 수동적인 개체
=> 프로세스 : 능동적인 개체
- 프로세스를 수행하기 위한 리소스 필요
=> CPU, 메모리, I/O, 파일
=> 초기화 데이터
- 프로세스 종료 시 재사용 가능한 리소스 회수 필요
- 단일 스레드 프로세스에는 다음 명령의 실행위치를 지정하는 프로그램 카운터 존재
=> 프로세스가 완료될 때까지 한 번에 하나씩 순차적으로 명령 실행
- 멀티 스레드 프로세스에는 스레드 당 하나의 프로그램 카운터 존재
- 일반적으로 시스템은 하나 이상의 CPU에서 동시에 실행되는 많은 프로세스를 가지고 있다.
=> 프로세스 / 스레드 간 CPU 다중화를 통한 통시성
Process Management Activities
운영체제는 프로세스 관리와 관련하여 하는 활동
(1) 사용자 및 시스템 프로세스 생성 및 삭제
(2) 프로세스 중단 / 재개
(3) 프로세스 동기화 매커니즘 제공
(4) 프로세스 커뮤니케이션을 위하 메커니즘 제공
(5) 교착상태 처리를 위한 메커니즘 제공
Memory Management
- 프로그램을 실행하려면 모든(또는 일부) 명령과 데이터가 메모리에 있어야 한다
- 메모리 관리는 메모리에 있는 내용과 시기를 결정
=> 사용자에 대한 CPU 활용률 및 컴퓨터 응답 최적화 위해
- Memory management 활동
- 현재 사용 중인 메모리의 부분과 사용 중인 사용자를 추적
- 메모리 내부 및 외부로 이동할 프로세스(또는 그 부분) 및 데이터 결정
- 필요에 따라 메모리 공간 할당 및 할당 해제
File-system Management
- OS는 정보 스토리지에 대한 통일된 논리적 뷰를 제공
=> 물리적 속성을 논리적 저장 장치인 파일로 추상화
- 파일 - 시스템 관리
- 일반적으로 파일은 directory로 구성
- 대부분의 시스템에서 액세스 제어를 통해 액세스 권한 결정
- OS 활동이 포함하는 것 :
=> 파일 및 디렉터리 만들기 및 삭제
=> 파일 및 디렉터리를 조작하는 기본요소(파일의 속성 지정)
=> secondary storage(보조 스토리지)에 파일 매핑
=> 안정적인(non - volatile) 저장 미디어에 백업
Mass-Storage Management
대용량 저장소 관리
- 보통 주 메모리에 맞지 않는 데이터나 "장시간" 동안 보관해야 하는 데이터를 저장하는 데 사용되는 디스크
- 적절한 관리가 가장 중요
- 전체 컴퓨터 작동 속도는 디스크 서브 시스템과 그 알고리즘에 달려 있다
- OS 활동
- mounting 과 unmounting (붙이기..?)
- 자유 공간 관리
- 저장소 할당
- 디스크 스케줄링
- partitioning
- 보호
Caching
- 컴퓨터의 여러 수준에서 수행되는 중요한 원칙(하드웨어, 운영 체제, 소프트 웨어)
- 사용 중인 정보를 저속 저장에서 고속 저장으로 일시적으로 복사
- 더 빠른 Storage(Cache)를 먼저 확인하여 정보가 있는지 확인
있을 경우 => 캐시에서 직접 사용되는 정보(빠른 속도)
없을 경우 => 캐시에 데이터를 복사하여 사용
- 캐싱되는 storage보다 작은 캐시
- 캐시 관리의 중요한 설계 문제
- 캐시 크기 및 교체 정책
Migration of data "A" from Disk to Register
- 멀티태스킹 환경은 storage 계층에서 저장된 위치에 관계없이 최신 값을 사용하도록 주의해야 함
- 모든 CPU가 캐시에 최신 값을 가질 수 있도록 멀티프로세서 환경이 하드웨어에서 캐시 일관성(cache coherency)을 제공해야 함
- 분산 환경 상황은 더 복잡
- 기준의 복사본이 여러 개 존재 가능
I/O Subsystem
- OS의 목적 중 하나는 하드웨어 장치의 특성을 사용자에게 숨기는 것 => 개발 편리
- I/O 하위 시스템 담당
- 버퍼링(전송 중 데이터 임시저장), 캐싱(성능을 위해 데이터의 일부를 더 빠른 스토리지에 저장), spooling(ex. HDD buffer에 cpu가 프린터에 전달해야 할 정보를 저장하여 대신 수행하는 것)을 포함한 I/O의 메모리 관리
- 일반 장치 - 드라이버 인터페이스 ex. 읽기, 쓰기,...
- 특정 하드웨어 장치용 드라이버
Protection and Security
- Protection : OS에서 정의한 리소스에 대한 프로세스 또는 사용자의 액세스를 제어하는 모든 메커니즘
- Security : 내부 및 외부 공격에 대한 시스템 보호
=> 서비스 거부, worms, 바이러스, ID 도용, 서비스 도난 등 광범위한 범위
- 시스템은 일반적으로 먼저 사용자를 구별하여 누가 무엇을 할 수 있는지 판단
- 사용자 ID(사용자 ID, 보안 ID)에는 사용자 당 하나씩 이름 및 관련 번호가 포함된다
- 모든 파일과 연결된 사용자 ID,액세스 제어를 결정하기 위한 해당 사용자의 프로세스
- 그룹 식별자(그룹 ID)를 통해 사용자 집합을 정의하고 제어할 수 있으며, 각 프로세스와 파일도 연결할 수 있다.
- 권한 상승으로 사용자가 더 많은 권한을 가진 유효한 ID로 변경할 수 있음
Virtualization
하드웨어의 성능이 크게 증가한 것에 비해 서버가 구동하는 애플케이션의 양이 적어 서버의 성능을 전부 활용하지 못하는 비효율적인 상황에서 만들어짐
- 운영체제가 다른 OS 내에서 애플리케이션을 실행할 수 있도록 함 => 성장 중
- source CPU 유형이 대상 유형과 다를 떄 사용되는 에뮬레이션(ex : PowerPC to Intel x86)
- 일반적으로 가장 느린 방법
- 컴퓨터 언어가 네이티브 코드로 컴파일 되지 않은 경우 - Interpretation(해석)
- Virtualization (가상화) : CPU 용으로 기본적으로 컴파일된 OS, 게스트 OS도 기본적으로 컴파일됨
- VMM(가상 시스템 관리자 ) : 가상화 서비스를 제공
- 사용사례 = 탐색 또는 호환성을 위해 여러 OS를 실행하는 노트북 및 데스크톱이 포함
- Apple 노트북이 Mac OS X host로 실행되고 게스트로 Windows
- 여러 시스템을 사용하지 않고 여러 OS용 앱 개발
- 여러 시스템을 사용하지 않고 품질 보증 테스트 애플리케이션
- 데이터 센터 내 컴퓨팅 환경 실행 및 관리
=> kernel이 VM1을 CPU라 생각하고 동작
=> 각각의 가상머신(VM)에 동적인 vCPU를 할당
Distributed Systems
- 네트워크로 연결된 개별 시스템(혹은 이종 시스템) 모음
네트워크는 통신 경로이며 TCP/IP가 가장 일반적
- LAN (Local area network)
- WAN (Wide area network)
- MAN (Metropolitan Area network) : 도심
- PAN (Personal Area Nework) : 개인영역 ex. 블루투스
- 네트워크 운영 체제는 네트워크를 통해 시스템 간의 기능을 제공
- 통신 체계를 통해 시스템이 메시지를 교환할 수 있다
- 단일 시스템의 환상
Client Server
- Client - Server computing
- 스마트 PC로 대체된 Dumb terminals
- 많은 시스템이 이제 서버에서 클라이언트에 의해 생성된 요청에 응답한다
=> 컴퓨팅 서버 시스템은 서비스(ex. database)를 요청하기 위해 클라이언트에 인터페이스를 제공
=> 파일 서버 시스템은 클라이언트가 파일을 저장하고 검색할 수 있는 인터페이스를 제공
Peer-to-Peer
- 분산 시스템의 또 다른 모델
- P2P는 클라이언트와 서버를 구분X
- 대신 모든 노드가 Peer로 간주
- 각각 클라이언트, 서버 또는 둘 다로 작동 가능
- 노드가 P2P 네트워크에 가입해야 함
=> 네트워크의 중앙 Lookup service에 서비스를 등록
=> 서비스 요청을 브로드캐스트하고 검색 프로토콜을 통해 서비스 요청에 응답
- 예를 들어 Napster 및 Gnutella, VoIP(skype와 같은 voice over IP)가 있다.
Cloud Computing
- 네트워크를 통해 컴퓨팅, storage, 심지어 애플리케이션까지 서비스로 제공
- 가상화를 기반으로 사용하기 떄문에 가상화의 논리적 확장이다.
- Amazon EC2에는 수천 대의 서버, 수백만 대의 가상머신, 인터넷을 통해 사용할 수 있는 페타바이트급 storage가 있으며 사용량에 따라 비용을 지불
- Many types :
- Public cloud : 인터넷을 통해 비용을 지불할 의사가 있는 모든 사람이 사용 가능
- Private cloud : 기업이 자체 사용하기 위해 운영
- Hybrid cloud : 퍼블릭 및 프라이빗 클라우드 구성 요소 모두 포함
- 서비스형 소프트웨어(SaaS) : 인터넷을 통해 사용할 수 있는 하나 이상의 애플리케이션 (ex. Word Processor)
- 서비스형 플랫폼(PaaS) : 인터넷을 통해 애플리케이션을 사용할 수 있는 소프트웨어 스택(즉, 제이터베이스 서버)
- Infrastructure as a Service(IaaS, 서비스형 인프라) : 인터넷을 통해 사용 가능한 서버 또는 storage(ex. 백업용으로 사용 가능한 storage)
Real-Time Embedded Systems
- 가장 일반적인 형태의 컴퓨터인 실시간 임베디드 시스템
- 다양한 특수 목적, 제한된 목적의 OS, 실시간 OS
- 확장 사용
- 기타 여러 특수 컴퓨팅 환경도 마찬가지
- OS가 있는 경우도 있고 OS 없이 작업을 수행하는 경우도 있다
- Real-Time OS(실시간 운영체제)는 고정 시간 제약이 잘 정의되어 있다.
- 제약 조건 내에서 처리해야 한다
- 제약 조건이 충족된 경우에만 올바르게 작동
'3-1 > 컴퓨터구조 및 운영체제' 카테고리의 다른 글
운영체제 : Ch2. Operating-System Services (0) | 2022.06.15 |
---|---|
운영체제 : Ch 1.1 Operation System (0) | 2022.06.11 |
운영체제 : Ch 1.2 Overview of Computer System Structure (0) | 2022.06.10 |
5.4 캐시 매핑 방식 (0) | 2022.05.29 |
5.3 캐시메모리 (0) | 2022.05.28 |