● Chapter 01의 목표
- 컴퓨터 시스템의 구조 알기
- OS를 구성하는 주요 구성요소들에 대해 알기
(나머지는 교재참고, 수업에서는 안다룸)
● OS는 무엇인가?
- OS는 사용자와 하드웨어 사이에서 동작하는 프로그램임 (but, 일반적인 application 과는 성격이 다름)
● OS의 목표
- 1차적으로 사용자 프로그램들을 실행시켜주는 역할을 함
- 프로그램 실행도중 발생하는 사용자문제를 쉽게 해결할 수 있도록 도와줌
- 컴퓨터 시스템을 보다 쉽고 편하게 사용할 수 있도록 도와줌
- resource들을 관리하여 하드웨어가 효율적으로 사용될 수 있도록 도와줌
● OS가 동작하는 환경
- 4개의 컴포넌트로 컴퓨터 시스템 구조를 나누어 볼 수 있음
- 사용자 (user, 최상위 컴포넌트) : 프로그램을 사용하는 사람들이나 다른 컴퓨터 및 기계들,
- 애플리케이션 (Application) : 사용자 문제를 해결하기 위해 컴퓨팅 자원을 어떻게 사용해야하는지 정의해
- 운영체제 (OS) : 하드웨어와 다양한 사용자, 애플리케이션들이 제대로 동작할 수 있도록 조율해줌
- 하드웨어 (hardware, 최하위 컴포넌트) : 기본적인 컴퓨터 자원들을 제공해줌. ex - CPU, Memory, 입출력 장치
● OS의 기능
- 사용자에 따라 관점이 달라짐
- 컴퓨터시스템 자원을 좋은 퍼포먼스로 쉽게 사용할 수 있도록 도와줌
- 여러 사용자들이 컴퓨터 시스템을 공유하여 사용할 때 공유하는 모든 사용자들이 잘 사용할 수 있도록 도와줌
- workstations처럼 서버로 부터 공유되는 resource들을 사용할 때 다양한 resource들을 사용할 수 있도록 도와줌
- resource들의 사용성을 최적화하여 제한된 환경에서도 resource들이 잘 사용될 수 있도록 도와줌
- UI가 거의없는 특정 디바이스나 자동차등의 내제된 임베디드 컴퓨터같은 환경에서도 제대로 동작할 수 있도록 도와줌
● OS의 정의
- resource allocator : 모든 resource들을 관리하고, 효율적이고 공정한 resource 사용을 위해 충돌하는 요청들 사이에서 결정을 내림
- control program : 부적정한 컴퓨터의 사용이나 에러들을 사전에 제어해줌
● 컴퓨터 시스템의 동작
- 입출력장치와 CPU는 동시에 실행할 수 있음
- 각 device contoller는 특정 디바이스 타입을 담당함
- 각 디바이스 컨트롤러는 local buffer를 가지고 있음
- CPU는 데이터를 main memory에서 local buffer로 이동함
- I/O 작업은 장치에서 해당 컨트롤러의 로컬 버퍼로 데이터를 전송하는 과정을 포함함
- 장치 컨트롤러는 작업이 완료되었음을 CPU에 알리기 위해 인터럽트를 발생시킴
● Interrupt의 기능
- 언제 발생할지 모르는 asynchronous 이벤트가 발생했을 떄 그 사실을 OS가 알게 해줌
- Interrupt는 일발적으로 Interrupt vector를 통해 Interrupt service routines를 컨트롤하고, Interrupt vector는 모든 서비스 루틴의 주소를 포함함
- Interrupt 아키텍처는 중단된 명령의 주소를 저장해야함.
- 소프트웨어에 의해 생성된 Interrupt는 오류나 사용자의 요청에 의해 발생할 수 있음
- OS는 Interrupt를 기반으로 작동함
● Storage Structure
- Main memory (주기억장치) : CPU가 직접 접근할 수 있는 유일한 대형 저장 매체 (랜덤 Access가 가능하며, 일반적으로 휘발성임)
- Secondary storage (보조기억장치) : 주 메모리의 확장으로, 더 큰 비휘발성 저장 용량을 제공함
- Hard disks (하드디스크) : 강철이나 유리로 만들어진 디스크 플래터 위에 자기 기록 물질이 코팅되어 있고, 디스크 표면은 논리적으로 트랙과 섹터로 나누어져 있음, 디스크 컨트롤러는 장치와 컴퓨터 간의 논리적 상호작용을 결정함
- Solid-state-disks (SSD) : 하드 디스크보다 빠르며 비휘발성임
● Storage-Device Hierarchy
- 저장 시스템은 속도, 비용, 휘발성 등을 기준으로 계층화되어 구성
- registers - cache - main memory - SSD - hard disk - optical disk - magnetic tapes 순으로 속도와 휘발성이 빠름
● Caching 이란?
- 데이터를 access하는 퍼포먼스를 향상시키기 위해 Caching을 사용함
- 캐싱은 컴퓨터의 여러 수준에서 실행되는 중요한 원리이며, 하드웨어, OS, 소프트웨어 등에서 모두 이용됨
- 사용 중인 정보는 더 느린 저장소에서 더 빠른 저장소로 복사됨
- 데이터가 캐시에 있으면, 빠르게 캐시에서 직접 사용되고, 데이터가 없으면, 캐시에 데이터를 복사하여 사용함
- 캐시는 캐싱되는 저장소보다 작으며, 캐시 관리는 중요한 설계 문제임
● Direct Memory Access Structure (DMA) 이란?
- 고속 I/O 장치용으로 사용되며, 메모리 속도에 근접한 속도로 정보를 전송함
- 장치 컨트롤러가 버퍼 저장소에서 메인 메모리로 데이터 블록을 직접 전송하기에, CPU의 개입 없이 데이터를 전송할 수 있음
- 데이터 전송 시 블록 당 단 하나의 Interrupt 발생시켜, 바이트 당 하나씩 발생하는 것보다 훨씬 적은 인터럽트를 유발함
● 요즘 컴퓨터들은 어떻게 동작하는가?
- CPU, Device, Memory로 구성되어 있음
1) CPU에서는 프로세스를 실행하기 위해 incstruction을 하나씩 가져옴
2) instuction을 가져올 때 입출력장치가가 필요하면 I/O Request를 보냄
3) I/O Request를 디바이스가 받으면 DMA로 필요한 데이터를 메모리로 로드하며, 그동안 OS는 CPU가 놀지않고 계속 일하도록 다른 프로세스들에 task들을 할당시킴
4) 그러다 요청한 I/O 작업이 끝나면 Interrupt를 사용해 OS에게 알림
5) 그러면 CPU는 Interrupt vector를 통해 끝난 Interrupt의 id를 찾고, Interrupt id에 해당하는 데이터를 메모리에서 레지스터로 가져온 다음, 다음 작업들을 이어감
● 컴퓨터 시스템 구조
- 대부분의 시스템들은 단일 범용 프로세서를 사용하지만, 특수 목적의 프로레스도 일부 시스템에 사용되기도 함
- 멀티프로세서 시스템은 병렬 시스템 또는 긴밀하게 연결된 시스템으로 알려져 있고, 사용과 중요성이 커지는 중임
- 멀티 프로세스는 처리량 증가, 규모의 경제, 신뢰성 증가 등의 많은 장점이 있음
- 멀티 프로세스는 각 프로세서가 특정 작업에 할당되는 '비대칭 멀티프로세싱(Asymmetric Multiprocessing)' 과 모든 프로세서가 모든 작업을 수행하는 대칭 멀티프로세싱(Symmetric Multiprocessing, SMP)이 존재함
● Clustered Systems
- 멀티프로세서 시스템과 유사하지만 여러 시스템이 함께 동작함.
- 보통 SAN(Storage-area network)를 활용해 공유된 저장소를 사용함
- 결함 발생 시에도 시스템을 지속적으로 사용할 수 있는 높은 이용성의 서비스를 제공함
- 비대칭 클러스터링은 하나의 기계가 대기모드에 있고, 대칭 클러스터링은 여러 노드가 앱을 싱행하고 모니터링함
- 일부 클러스터는 고성능 컴퓨팅(High Performance Computing, HPC)을 위해 사용되며, 애플리케이션은 병렬처리가 가능하게 설계되어야 함
- 충돌하는 작업을 방지하기 위해 분산 잠금 관리자(Distributed Lock Manager, DLM)를 사용할 수 있음
● Operating Systems Structure
[Multiprogramming]
- 한명의 사용자가 CPU와 I/O 장치를 항상 바쁘게 유지할 수 없기 때문에 효율성을 위해 멀티프로그래밍이 필요함
- 작업(코드와 데이터)를 조직하여 CPU가 항상 실행할 작업이 항상 존재하게 함
- 시스템의 전체 작업들 중 일부분만 메모리에 유지됨
- 작업 스케쥴링을 통해 선택된 하나의 작업만 실행됨
- I/O 작업 등을 위해 대기해야 할 때, 운영 시스템은 다른 작업으로 전환함
[Timesharing]
- 멀티프로그래밍의 논리적 확장으로, cpu가 작업을 자주 전환하여, 사용자가 각 작업들과 상호작용할 수 있게 함으로써 대화형 컴퓨터를 제공함
- 응답시간은 1초 미만이여야 함
- 각 사용자는 메모리에서 실행중인 최소 하나의 프로그램을 가짐
- 여러 작업이 동시에 실행될 준비가 되었다면 CPU scheduling을 실행
- 모든 프로세스가 메모리에 적재될 수 없을 때, Swapping을 통해 일부 메모리를 하드디스크로 쫒아내거나, 하드 디스크에 있는 데이터나 메모리를 들여보내며 제한된 공간의 메모리에 더 많은 프로세스들이 동작할 수 있도록 함
- 가상 메모리는 프로세스가 메모리를 모두 적재하지 않아도 실행될 수 있도록 합니다.
● Operating Systems Operations
- 운영 시스템은 하드웨어 및 소프트웨어 인터럽트에 의해 주도됨
- 하드웨어 인터럽트: 장치에서 발생하는 인터럽트로, 주로 입출력 작업의 시작과 끝을 알리기 위해 사용됨
- 소프트웨어 인터럽트: 소프트웨어 오류(0으로 나누기), 운영 시스템 서비스 요청(시스템 호출), 또는 프로세스 문제( 무한 루프, 프로세스 간의 충돌) 등에 의해 발생함
- user mode와 kernel mode로 나누어 OS는 대게 Dual mode로 동작함
● Transition from User to Kernel Mode
- 무한 루프나 하나의 프로세스가 resource를 독점하는 것을 막기위해 타이머를 사용함
- 타이머는 일정시간 후에 컴퓨터를 Interrupt 하도록 세팅됨
- 물리적인 시간에 의해 카운터는 감소하도록 유지됨
- 카운터가 0이 되면 인터럽트가 발생함
- Interrupt가 발생하면 운영 시스템이 프로세스를 제어하거나 종료함
● Process Management (OS)
- 프로세스는 프로그램과 구분해야함, 실행중인 프로그램이 프로세스임 (하나의 job, task --> process)
- 프로그램은 정적인 passive한 entity이고, 프로세스는 실행중인 active entity이다.
- 프소세스를 실행하기 위해서는 CPU, Memory, I/O, files, 초기 데이터등의 다양한 resource들이 필요함
- 프로세스가 종료될 때는 사용했던 자원을 회수하고 재사용 가능한 상태로 만들어줘야 함
- 프로세스는 각각 프로그램 카운터를 가지고 있으며, 프로그램 카운터가 다음에 실행할 명령어의 위치를 정해줌
- 프로세스는 명령어를 순차적으로 하나씩 실행함
- 각 스레드는 자신의 프로그램 카운터를 가지고 있어 독립적인 실행흐름을 가짐
- 시스템은 여러 프로세스를 동시에 실행할 수 있고, CPU를 여러 프로세스/스레드 간에 멀티 플렉싱하여 동시성을 제공함
● Process Management Activities (OS)
- OS가 사용자 및 시스템 프로세를 생성하고 종료하는 책임을 짐
- 특정 조건하에서 프로세스를 일시 중단하고 필요에 따라 다시 시작함
- 여러 프로세스 또는 스레드가 효과적으로 동시에 작동할 수 있도록 동기화 도구를 제공함
- 프로세스 간의 데이터 교환이나 상태정보 공유가 가능한 커뮤니케이션을 제공함
- 프로세스가 서로 자원을 기다리며 무한 대기에 빠지는 deadlock을 해결하기 위한 방법을 제공함
● Memory Management (OS)
- 전체 또는 일부 명령어가 메모리에 존재해야 함
- 프로그램에 필요한 데이터도 전체 또는 일부가 메모리에 존재해야 함
- 어떤 데이터와 명령어가 언제 메모리에 있어야 하는지 결정함
- CPU 사용 최적화와 사용자 응답 향상을 목적으로 함
- 현재 메모리에 있는 부분과 그것을 사용하는 주체를 추적함
- 어떤 프로세스나 데이터가 메모리에 들어가고 나올지 결정함
- 필요에 따라 메모미 공간을 할당하고 해제함
● Storage Management (OS)
- OS는 획일되고 논리적인 정보저장의 관점을 제공함
- 물리적 속성을 논리적 저장 단위인 file로 추상화해줌
- 접근 속도, 용량, 데이터 전송률, 접근 방법과 같은 다양한 속성을 가짐
[파일 시스템 관리]
- 파일은 일반적으로 디렉터리로 구성됨
- 대부분의 시스템에서는 누가 어떤 파일에 접근할 수 있는지를 결정하는 접근 제어 기능을 제공함
- 파일 및 디렉터리의 생성과 삭제를 관리함
- 파일과 디렉터리를 조작하는 기본 기능을 제공함
- 파일을 보조 저장소에 매핑하는 기능을 수행함
- 파일을 안정적인 비휘발성 저장 매체에 백업함
● Mass-Storage Management (OS)
- 주로 디스크는 주 메모리에 들어갈 수 없거나 장기간 보관해야 할 데이터를 저장하는 데 사용됨
- 적절한 저장 관리는 컴퓨터의 전체 운영 속도에 중요한 영향을 미치며, 디스크 하위 시스템과 그 알고리즘에 크게 의존함
- 공간 관리: 사용 가능한 공간을 효과적으로 관리해줌
- 저장소 할당: 데이터가 저장될 위치를 결정하고 할당해줌.
- 디스크 스케쥴링: 디스크의 읽기/쓰기 작업을 효율적으로 스케줄링해줌
- 몇몇 저장소는 속도가 빠르지 않아도 됨
- 광학 저장소나 자기 테이프 등이 속도가 빠르지 않아도 됨
- 속도가 빠르지 않아도되는 정장소들은 운영 시스템 또는 응용 프로그램에 의해 관리되어야 함
- 저장 유형으는 WORM(한 번 쓰고 여러 번 읽기 가능)과 RW(읽기 및 쓰기 가능)가 있음
- Storage의 Level이 올라갈수록, 속도가 빨라지고, 용량은 줄어들며, 비용은 올라감, 최상위 level은 volatile한 특정을 가지고 있고, 어느정도 내려가면 non-volatile한 특성을 가짐
● Disk 에서 Register 로의 "A"데이터의 이동
- 데이터는 하드 디스크-> 메인 메모리 -> 캐시 -> 하드웨어 레지스터순으로 이동함
- 멀티태스킹 환경에서는 저장 계층에 상관없이 데이터의 가장 최신 버전을 사용해야 됨
- 멀티프로세서 환경에서는 모든 CPU가 캐시에 데이터의 가장 최근 값을 가지고 있어야 하므로 캐시 일관성이 중요함
- 분산 환경에서는 데이터의 여러 복사본이 존재할 수 있으며, 이에 대한 다양한 해결책이 필요함
● I/O Subsystem
- OS의 하나의 목적은 사용자로부터 하드웨어 기기의 복잡성을 숨기는 것임
[메모리 관리]
- 버퍼링: 데이터를 임시적으로 저장하면서 전송이 완료될 때까지 관리함
- 캐싱: 성능 향상을 위해 빠른 저장소에 데이터 일부를 저장함
- 스풀링: 한 작업의 출력을 다른 작업의 입력과 겹치게 하여 처리함
- 일반적인 장치 드라이버 인터페이스를 통해 특정 하드웨어 기기에 대한 드라이버를 관리함
'이론공부 > 시험공부' 카테고리의 다른 글
운영체제 (OS) - Chapter 03 (0) | 2024.10.11 |
---|---|
운영체제 (OS) - Chapter 02 (1) | 2024.10.11 |
소프트웨어 공학 (3주차) (1) | 2024.09.13 |
컴퓨터 구조 ( 1~2주차) (0) | 2024.09.10 |
소프트웨어 공학 (1~2주차) (2) | 2024.09.09 |