- 부트스트래핑(bootstraping)
운영체제를 메인 메모리에 적재하는 과정을 부팅, 또는 부트스트래핑 이라고 합니다.
즉, bootstrap program(부트스트랩 프로그램)이란 컴퓨터가 처음 켜질 때 가장 처음 실행되는 프로그램을 말합니다. 하드디스크와 같은 보조기억장치에 저장된 운영체제를 메인 메모리에 적재하는 ROM에 고정시킨 소규모 프로그램을 부트로더(부트스트랩 로더) 라고 합니다.
ex)BIOS!
- ⭐⭐ Interrupt(인터럽트) ⭐⭐(1.하드웨어 측면으로 보면 어려워보이지만 사용자가 컴퓨터에서 키보드나 마우스같은걸로 입력하는거라고2. 소프트웨어 측면으로 봤을때는 하던거를 멈추고 이것좀봐라) 에러만쓰는건아님
인터럽트 개념은 정말 중요합니다. 인터럽트 핸들러를 실행하고자 CPU가 멈추는 이벤트입니다. 쉽게 말하면 현재 실행 중인 프로그램을 중단하고, 다른 프로그램의 실행을 요구하기 위해 발생하는 명령입니다. 다중 프로그래밍을 위해 없어서는 안 될 구현입니다.
- 하드웨어의 인터럽트는 Timer, Keyboard 입력, mouse 입력, DMA 등으로 이루어질 수 있습니다. 인터럽트는 시스템 버스를 통해 전달됩니다.
- 소프트웨어의 인터럽트는 ⭐system call⭐로써 구현될 수 있습니다.
- 인터럽트 핸들링(Interrupt handling)은 CPU의 중요한 기능 중 하나입니다.
- 인터럽트 요청 신호에 따라 수행하는 루틴이 인터럽트 처리 프로그램, 즉 인터럽트 서비스 루틴입니다. 쉽게 말하면 인터럽트 함수들을 말합니다.
- 인터럽트 벡터(Interrupt vector)는 인터럽트 서비스 루틴의 주소 배열입니다. 이 인터럽트 벡터들로 이루어진 테이블을 ‘인터럽트 벡터 테이블’ 혹은 ‘인터럽트 디스크립터 테이블’ 이라고 합니다.
- 프로그램이 돌다가 인터럽트 발생 시 발생 전에 실행중인 그 정보를 저장하고 있어야(스택 영역에) 다음에 다시 돌아와서 이전 프로그램을 실행할 수 있습니다.
- Interrupt Timeline
I/O가 작동하고 있는 동안, CPU는 다른 일들을 할 수 있습니다. I/O completion은 인터럽트를 발생시킵니다.
- Storage Structure
프로그램은 실행되기 위해서는 메모리에 적재(be loaded)되어야만 합니다. 메모리는 RAM을 사용하며 load/store instruciton을 가집니다.
- 폰 노이만 아키텍처( 말만 어려움 그냥 cpu, memoty, disk 구조 옛날 컴퓨터만든 아저씨 이름따서만듬)
명령어와 데이터는 CPU에 대한 단일 링크가 있는 동일한 메모리에 저장됩니다. (메모리 공유)
CPU는 여러 기능 유닛을 가질 수 있습니다. 캐시를 사용하여 메모리 액세스를 더욱 향상시킬 수 있습니다.
- 보조 기억 장치 (Secondary stroage )
일반적으로 HDD/SSD를 말합니다. 메인 메모리가 휘발성이고 너무 작기 때문에 보조 기억 장치가 필요합니다.
I/O Structure
- Device controller / DMA(Direct Memory Access) api
범용 컴퓨터 시스템은 공통 버스에 의해 연결된 여러 개의 디바이스 컨트롤러와 CPU들로 구성되어 있습니다.
각 디바이스 컨트롤러는 특정 유형의 장치를 담당하며, 디바이스 컨트롤러는 약간의 로컬 버퍼와 특수목적용 레지스터 집합을 유지합니다.
통상적으로 OS는 각 디바이스 컨트롤러마다 장치 드라이버를 가지고 있으며 이는 디바이스 컨트롤러의 동작을 이해하고 운영체제의 다른 부분들에게 장치에 대한 일관된 인터페이스를 제공합니다.
- DMA(Direct Memory Access) cpu가 일을 덜하고 알아서 다이렉트로 접속하라고 권리양도를 해준다 cpu가간섭을안받음
주변장치들(하드디스크, 그래픽 카드, 네트워크 카드, 사운드 카드 등)이 메모리에 직접 접근하여 읽거나 쓸 수 있도록 하는 기능으로써, 컴퓨터 내부의 버스가 지원하는 기능이다. 대개의 경우에 메모리의 일정 부분이 DMA에 사용될 영역으로 지정되며 DMA가 지원되면 중앙처리장치가 데이터 전송에 관여하지 않아도 되므로 컴퓨터 성능이 좋아집니다.
주변장치의 데이터는 장치 컨트롤러(device controller)에 의해 로컬 버퍼로 이동합니다. 그러나 전송할 데이터가 많은 경우, 많은 양의 데이터의 이동으로 인한 부담이 커지는데 이러한 문제를 해결하기 위해 DMA를 이용합니다. 디바이스 컨트롤러가 데이터의 한 블록을 이동시키는데 이 과정에서 DMA로 인해 CPU의 개입이 필요없게 됩니다.
CPU에서는 데이터 이동이 완료되었다는 단 한 번의 인터럽트만 발생합니다. 데이터가 전송되는 동안 CPU는 다른 작업을 수행할 수 있게 되어 효율성이 높아집니다.
쉽게 풀면
1.interrupt(인터럽트) (어려워보이지만 사용자가 컴퓨터에서 키보드나 마우스같은걸로 입력하는거라고이해하면쉽다)
2.소프트웨어의 인터럽트는 ⭐system call⭐(나좀봐라 => 1.ok 볼게, 2.이따가 볼게)
3.폰 노이만 아키텍처( 말만 어려움 그냥 cpu, memoty, disk 구조 옛날 컴퓨터만든 아저씨 이름따서만듬
4. Device controller / DMA(Direct Memory Access) (클라이언트가 쓰는 api같은거)
5. DMA(Direct Memory Access) (컴퓨터 부품들이 메모리에 접근 할수있게해주는거임)
'컴퓨터 공학' 카테고리의 다른 글
[운영체제] 해커가 암호없이 관리자 권한을 얻는 방법 (0) | 2022.06.28 |
---|---|
트래픽이 몰릴때 캐시를통해 해결할 수 있는 방법. (1) | 2022.04.26 |
CPU 스케쥴링이란 무엇이냐? (0) | 2022.04.25 |
캐시가 무엇이냐? (0) | 2022.04.25 |
가비지 컬렉션이란? (0) | 2022.04.25 |