컴퓨터 연산 = CPU가 연산
입출력 장치의 I/O의 연산 = 입출력 컨트롤러가 연산
로컬버퍼: 각 입출력 장치의 컨트롤러가 입출력된 데이터를 임시로 저장 하는 작은 메모리
프로그램이 디스크의 데이터 요청 -> 디스크 컨트롤러가 로컬버퍼로 데이터 읽어서 가져옴 -> 컨트롤러가 CPU에게 인터럽트를 발생시킴 -> CPU는 인터럽트를 감지하고 관련 업무 수행
운영체제 커널에는 입터럽트가 들어왔을 때 해야 할 일이 미리 다 프로그래밍되어 그 코드가 보관돼 있음
인터럽트에는 하드웨어 인터럽트, 소프트웨어 인터럽트가 있음
인터럽트 벡터: 인터럽트 종류마다 번호를 정해놓은 자료구조. 여기서 번호는 해야할일이 적힌 코드의 위치를 가리킴
인터럽트 처리루틴, 인터럽트 핸들러: 실제 처리할 코드가 정의된 곳
보통 인터럽트라하면 하드웨어 인터럽트를 말함. 그래서 소프트웨어 인터럽트를 구분하기 위해 트랩(trap)이라는 용어로 주로 불림
위로 갈수록 비싸고 빠름
정말 필요한 정보일수록 위로가고 그렇지 않은 부분은 밑에 보관하는 식으로 자원을 효율적이고 빠르게 사용함
캐싱 기법: 상대적으로 용량이 적은빠른 저장장치를 이용해 느린 저장장치의 성능을 향상시키는 총체적 기법
운영체제는 멀티 프로그래밍 환경으로 여러 프로그램을 실행할 수 있다.
각 프로그램이 다른 프로그램의 실행을 방해하거나 충돌을 일으킬 수 있다.
이를 막기 위해 운영체제는 커널모드(kernel mdoe, system mode)와 사용자모드(user mode)가 있다.
커널모드
하지만 사용자 프로그램이 CPU를 갖고 있는 동안은 운영체제가 이를 감시할 수가 없음(CPU를 차지하고 있지 않기 때문)
이 상황을 하드웨어적으로 해결 -> 모드 비트
운영체제에서 사용자 프로그램으로 CPU의 권한을 넘겨줄 때 mode bit를 1로 설정해서 넘겨줌. CPU는 보안과 관련된 명령을 수행하기 전에는 항상 모드비트를 조사해 그 값이 0으로 세팅된 경우에만 실행
파일 입출력의 경우 사용자가 다른사용자의 파일에 접근하면 안된다. 그래서 커널모드로만 입출력을 할 수 있다.
운영체제가 입출력을 실행하기 전에 올바른 입출력인지 판단하고 실행하기 때문에 보안을 유지할 수 있다.