반응형
1.1 운영체제가 할 일 (what operating systems do)
- 컴퓨터 = 하드웨어 + 운영체제 + 응용프로그램 + 사용자 (1.1 그림 참고)
- 하드웨어 = 중앙처리장치(CPU), Memory, I/O장치로 구성
- OS는 하드웨어와 응용프로그램&유저 사이를 연결하는 인터페이스
- OS는 자원 관리자로 동작 (필요한 자원을 할당)
- OS에 무엇이 포함되나? - 커널 or 판매업자가 배송하는 모든 것
- 시스템 프로그램 : 운영체제와 연관있으나 반드시 커널에는 포함 할 필요 없음
- 응용 프로그램 : 시스템 작동과 관계없는 모든 프로그램
1.2 컴퓨터 시스템의 구성
1.2.1 컴퓨터 시스템 연산
- 컴퓨터 구동을 시작하기 위해서 초기 프로그램은 부스트랩 프로그램
- PC내 읽기 전용 메모리ROM 이나 EEPROM에 저장되고 펌웨어라고 알려져 있음
- CPU 레지스터 -> 장치 제어기-> 메모리 등 초기화
- 운영체제 커널을 찾아 메모리에 적재해야 운영체제를 실행 가능
- 커널이 실행되면 사용자에게 서비스를 제공가능하며 일부 서비스는 메모리에 적재되어 커널이 실행되는 동안 계속 실행되는 시스템 프로세스나 시스템 데몬이 됨
- 이후 부터는 event 발생을 기다림.
- event의 발생은 interrupt에 의해 전달 받음
- 하드웨어는 시스템 버스를 통해 CPU에 interrupt 발생
- 소프트웨어는 시스템호출 (system call) or 모니터호출 이라는 연산을 실행하며 interrupt 발생
1.2.2 저장장치 구조
- 메인 메모리(RAM)
- 메모리는 바이트의 배열을 제공
- 프로그램은 RAM에 적재되야 실행이 가능
- RAM은 휘발성 저장장치
- 적재(fetched)는 메인 메모리로부터 CPU 내부의 레지스터로 한바이트 또는 워드를 옮기는 것
- 저장(stored)은 레지스터 내용을 메인 메모리로 옮기는 것
- 휘발성 메모리는 빠르고 작으며 bit당 더 비싸다
- Regitser
- CPU Cache
- 비 휘발성 메모리는 느리고 크며 bit당 더 싸다
- Optical disks
- Magnetic disks
- Magnetic tapes
1.2.3 입출력 구조
- I/O를 위해서는 적절한 레지스터에 필요값을 적재
- 장치제어기는 레지스터 조사 -> 자신의 로컬 버퍼로 데이터 전송
- 대량의 데이터 전송에는 높은 오버헤드 초래 -> DMA방식 사용 (직접메모리 접근)
- DMA는 CPU의 개입 없이 버퍼 -> 메모리로 데이터 블록 전체 전송
1.3 컴퓨터 시스템 구조
1.3.1 단일 처리기 시스템 (Single-Processor Systems)
- 컴퓨터와 유저 응용프로그램을 실행시킬 하나의 메인 CPU를 갖음
- 다른 처리기(disk controllers, GPUs, etc)은 응용 프로그램을 실행할 수 없음.
1.3.2 멀티(다중) 처리기 시스템 - 병렬처리 or 멀티코어 시스템
- 증가된 처리량(throughtput) - 빠른 실행, 선형적으로 빨라지지는 않음.
- 규모의 경제 - 주변기기, 디스크, 메모리, 공유된 processor
- 증가된 신뢰성 - 한 개의 CPU가 느려져도 계속해서 실행됨(성능은 조금 하락해도)
- 중복 처리를 통한 검사와 균형을 제공
1.3.3 클러스터형 시스템
- 저장장치를 공유, 빠른 속도의 랜이나 InfinitBand와 같은 고속의 상호 연결망으로 연결
- 협업 프로토콜과 마찬가지로 공유 저장소에 접근하기 위한 특별한 고려사항이 필요(분산 잠금 관리)
1.4 운영체제의 구조
- 사용자가 여러 프로그램을 동시에 실행 할 수 있게 다중 프로그래밍을 할 수 있음
- 메모리 / 프로세스 매니지먼트
- 작업 스케쥴링
- 전략적인 자원 할당
- 메모리에서 디스크로 스왑인/스왑아웃 (스와핑)
- 물리적 메모리의 가상 메모리(일부만 메모리에 적재되어 수행을 허용)
- 인터럽트 핸들링
- 파일 시스템 매니지 / 보안 / 프로세스간 통신(작업동기화 및 통신)
1.5 운영체제 연산
-> 잘못된 또는 악의적인 프로그램이 다른 프로그램의 수행을 부정확하게 만들 수 없도록 보장해야함
1.5.1 이중연산모드
- 정상적인 무해한 코드를 사용할 때 유저모드
- mode bit로 모드를 구분
- 사용자 app이 운영체제가 제공하는 서비스를 요청하면 커널모드로 전환
- 특정 명령어는 커널모드에서만 실행
- 커널 모드는 system calls을 통해서만 입력 가능. 사용자 코드는 불가능
- 현대 대부분 PC는 듀얼모드 지원
- 모드의 개념은 2개 이상으로 확장될 수 있으며, 1개의 bit 이상을 요구함
- 가상화를 지원하는 CPU는 추가되는 비트중 하나를 사용해서 가상머신 VMM이 시스템을 제어하는 시점을 나타냄.
- VMM은 user 모드보다는 크지만 커널모드 보다는 적은 권한을 갖음.
- 시스템콜은 소프트웨어 인터럽트로 실행되는데 하드웨어 인터럽트 핸들러가 적절한 인터럽트 핸들러로 제어권한을 옮기고 프로세스에서 모드 bit를 커널모드로 변경함.
- 인터럽트 핸들러는 어떤 인터럽트가 발생했는지 확인하고 추가 파라미터(일반적으로 레지스터를 통해 전달됨)를 확인함. 그 후 시스템 콜에 의해 호출된 서비스를 처리하기 위해 적절한 커널 서비스 루틴을 호출함.
- 사용자 프로그램의 불법 명령 실행 (권한 혹은 존재하지 않는 명령) 이나 메모리 범위를 벗어나는 접근은 소프트웨어 인터럽트를 생성합니다. 인터럽트 핸들러에 의해서 묶이고 제어는 OS로 전송되어 적절한 에러메세지를 보여주고 추후에 분석하기위해 로그(코어) 파일을 만들고 문제가되는 프로그램을 종료함.
1.5.2 타이머
- 커널에 유저 코드를 실행하기 전, 타이머는 인터럽트를 발생할 수 있게 set.
- 타이머 인터럽트 핸들러는 제어를 커널로 되돌림
- 어떤 유저 프로세스도 시스템을 거스를수는 없음.
- 타이머 제어는 특권 명령임 (커널 모드가 필요로함)
참조 : https://www.cs.uic.edu/~jbell/CourseNotes/OperatingSystems/index.html
반응형
'이론공부 > OS' 카테고리의 다른 글
[운영체제] Operating System Concepts, Chapter 1 - 2 (0) | 2023.02.21 |
---|---|
Operating System Structures Chapter2 (0) | 2021.07.25 |