4회차
이찬우
하드웨어 안전 제거
- 데이터 전송 버퍼와 저장장치의 동기화 과정
지역성 이론
- goto 문을 사용하지 않는 것이 좋음
- 어셈블리 코드를 보면 JMP문 사용이 빈번히 보이는데, 그 코드와 goto문과의 차이점은 무엇일까
cpu 파이프라이닝
- CPU 멜트다운 이슈과 이와 연관됨
- CPU 캐싱과 파이프라이닝을 이용했던 사건
- 관련기사
김남영
운영체제
운영체제란 무엇인가
- 사용자에게 편리한 인터페이스 환경을 제공하고 컴퓨터 시스템의 자원을 효율적으로 관리하는 소프트웨어
- 다양한 인터페이스를 제공하는 것을 그림을 통해 알 수 있다.
운영체제의 역할
- 자원 관리 및 보호
- 하드웨어 및 사용자 인터페이스 제공
커널과 인터페이스
커널
- 프로세스, 메모리, 저장장치 관리 같은 운영체제의 핵심 기능을 모아 놓은 것.
- 자동차의 엔진과 비슷한 개념.
시스템 호출
- 커널에 직접 접근 보다 간접 접근
- 커널을 보호하기 위한 인터페이스
- 커널을 직접 건드리는 것은 위험하다.
드라이버
- 커널과 하드웨어의 인터페이스
- 마찬가지로 추상화 시켜놓았다고 생각
- 하지만 커널과 하드웨어는 직접적으로 연결되기도 한다.
커널의 구성
단일형 구조 커널
- 하나로 다 뭉친 모듈
- 비용이 적게 들지만, 단점이 너무 많다.
- 버그, 오류 처리 힘듬 이식성 낮음 등등..
계층형 구조 커널
- 비슷한 기능의 모듈을 하나의 계층으로 만듬
- 계층 간 통신으로 OS를 구현
- 오류 수정 시 특정 계층만 수정하므로 용이하므로 디버깅이 쉬움
- 현대 OS 대부분의 구조
마이크로 구조 커널
- 커널 자체가 커질 경우를 대비
- 각 모듈은 독립적인 작동, 하나의 모듈이 말썽이어도 OS가 멈추지 않음.
- 모듈 간 정보 교환은 프로세스 간 통신으로 이루어짐.
가상머신
- C와 다르게 Java는 어느 OS에서도 작동한다. 바로 가상머신 덕분!
- 운영 체제 위에 가상머신을 만들고 그 위에 응용 프로그램을 작동시키자.
- 동일한 환경에서 작동하는 것처럼 보인다.
- 하지만 가상머신을 통해서만 응용 프로그램이 작동하므로 느려진다는 단점이 있다.
폰노이만 구조
- 모든 프로그램은 메모리에 올라와야 실행할 수 있다.
- 예전에는 컴퓨터의 전선을 연결하여 회로룰 구성하는 형태였기에, 다른 용도로 사용하려면 전선의 연결을 바꾸어야 했다.
CPU
CPU의 기본 구성
- 산술논리 연산 장치
- 사칙연산 같은 산술 연산과 OR, AND 논리 연산
- 제어 장치
- CPU에서 작업을 지시하는 부분
- 레지스터
- CPU 내에 데이터를 임시로 보관하는 곳
버스
- CPU와 메모리, 주변장치 간 데이터를 주고 받을 때 사용한다.
- 제어, 주소, 데이터 버스
메모리의 종류
- RAM
- 읽거나 쓰기 가능
- ROM
- 읽기만 가능
부팅
- 운영체제도 소프트웨어이므로 실행하려면 메모리에 올라와야 한다.
- 그 과정을 부팅이라고 한다.
버퍼
- 속도의 차이가 있는 두 장치 간 차이를 완화하는 역할
- 작업 속도가 다른 장치들의 속도 차이를 개선하기 위한 기술
- CPU 내부 버스, 시스템 버스, 메모리, 하드디스크의 속도 차이.
캐시
- 메모리와 CPU 간 속도 차이를 완화하기 위해 메모리의 데이터를 미리 가져와 저장하는 임시 장소
- CPU가 메모리에 접근하기 전 일단 캐시를 방문해 데이터가 있는지 찾는다.
- 있으면 캐시 히트
- 없으면 캐시 미스
- 일반적인 컴퓨터의 캐시 적중률은 90%
인터럽트
- CPU가 일을 직접하는 것이 아니라, 저장장치 데이터 이동을 독립적으로 운영
- 입출력 관리자에게 데이터 전송만 지시
- 완료 신호를 CPU에게 보냄 => 요 신호가 인터럽트
직접 메모리 접근
- 효율성을 높이기 위해 입출력 관리자가 데이터의 입출력 책임을 맡음.
- 이러한 책임 및 권한을 일컫는다.
메모리 매핑 출력
- 직접 메모리 접근으로 메모리가 복잡해졌다.
- CPU가 사용하는지 입출력 장치가 사용하는지 데이터가 섞여 있음.
- 이때 메모리를 나누어서 관리하자.
사이클 훔치기
- 동시에 메모리 접근을 하면 안되므로,
- 상황 별로 메모리 사용 권한을 양보하자~
병렬 처리
- 동시에 여러 개의 명령을 처리하여 작업의 능률을 올리는 방식
병렬 처리의 고려 사항
- 상호 의존성이 없어야 한다.
- 각 단계의 시간을 일정하게 맞추자.
- 전체 작업 시간을 몇 단계로 나눌지 따져보기.
This post is licensed under CC BY 4.0 by the author.




