HW와 SW

이정민·2022년 4월 13일
0

운영체제

목록 보기
2/12

하드웨어 구성요소

  • 메인보드
  • 버스
  • 프로세서
  • 클럭
  • 메모리 계층구조
  • 보조기억장치
  • DMA
  • 주변장치

메인보드 (mainboard, printed circuit board: PCB, motherboard)

  • 장치간 전기적 연결을 제공하는 기판
  • CPU, 메모리 등의 장치 부착 슬롯 제공 및 장치간 연결 버스 제공
  • 하위수준 처리를 담당하는 BIOS 등의 칩 포함

노스 브리지 (Northbridge)

  • CPU와 메모리, 고속 그래픽 카드, Southbridge 등과의 통신 제어

사우스 브리지 (Southbridge)

  • 저속 장치에 대한 연결지원

버스

  • 장치 간의 신호 전송을 하는 연결선 다발

프로세서

  • 기계어 프로그램 실행
  • 인출/해석
    - 명령어 가져오기
    • 명령 해석 및 제어신호 발생
  • ALU
    - 산술, 논리 연산 처리
  • 레지스터
    - 프로세서 내 고속 메모리
    • 처리할 데이터 적재
  • 캐시
    -메모리에서 읽어들인 명령어나 데이터로 채워지는 버퍼 형태의 고속 기억 장치

클럭

  • 컴퓨터 시간은 사이클 단위로 측정
  • System clock generator에 의해 발생
  • 프로세서 속도는 GHz 단위
    - Intel i7-4910MQ : 2.9 GHz

메모리 계층 구조

  • 메인 메모리가 프로세서에 직접 접근 가능한 최하단
  • 저장 장치의 접근 속도
    - 레지스터>L1캐시>L2캐시>주기억장치(DRAM)>디스크

메인 메모리

  • SRAM (static RAM): 고속, refresh 불필요
  • DRAM (dynamic RAM): 고집적도, 저가

보조기억장치

  • 하드 디스크
    • 탐색지연
    • 회전지연
    • 전송시간
  • CD
  • DVD
  • Flash memory

DMA (Direct Memory Access)

  • 주변장치들(하드디스크, 그래픽 카드, 네트워크 카드, 사운드 카드 등)이 메모리에 직접 접근하여 읽거나 쓸 수 있도록 하는 기능
  • CPU는 데이터 전송에 관여하지 않음
  • 메모리의 일정 부분이 DMA에 사용될 영역으로 지정

주변장치

  • 컴퓨터에 연결되어 있지만, 필수적인 부분은 아닌 것

운영체제 지원 하드웨어 요소

  • 실행모드
  • 메모리 보호
  • 인터럽트
  • 예외처리
  • 타이머
  • 부트스트래핑
  • 버퍼링

프로세서 실행모드 (execution mode)

  • 특권 명령어(privileged instruction)
    - 사용자 프로그램에서는 사용할 수 없고 관리 프로그램만이 사용이 가능한 명령
    ex) 시스템 파일 수정, 파일의 소유자 변경, 디스크 쿼터 조정, daemon 시작 또는 종료
  • 프로세서에서 복수의 실행 모드 제공
    - Intel i360 프로세서 이후 4개 모드 제공 (#0 최고특권, #3 최소특권)

사용자 모드(User mode, user state, problem state)

  • 특권 명령어를 제외한 명령어 실행 가능

커널 모드(Kernel mode, supervisor state)

  • 특권 명령어 및 특권 자원 사용 가능

커널모드 전환

  • 원인
    • 인터럽트(interrupt; hardware interrupt)
      - 키보드 입력, 타이머, 마우스 등 외부 주변장치에서 발생
    • 트랩(trap; software interrupt)
      - 프로그램에서 직접 호출, 시스템호출(system call)
    • 예외상황(exception)
      • 프로그램 실행 중 비정상 상황에서 발생
      • 0으로 나누기, page fault, overflow 등
      • OS에 따라 처리기의 인터럽트 벡터 테이블 등록 및 호출 지원
      • try-catch 구문: 함수 호출 스택 정보 이용 예외처리기 실행 및 종료
  • 인터럽트 서비스 루틴
    - 커널 모드 전환
    • 레지스터 내용 저장
    • 서비스 처리기 실행

인터럽트

  • 외부에서 하드웨어적으로 인터럽트 사건 발생
  • 인터럽트 벡터 테이블에 특정 인터럽트 번호에 대응하는 인터럽트 처리기(interrupt handler)의 주소 저장
  • 명령어 실행 사이의 인터럽트 요청 여부 확인 및 인터럽트 처리기 호출

트랩

  • 직접 명령어를 사용하여 호출
  • 80x86 CPU에서 int 명령어 사용
    - 지정된 번호의 인터럽트 발생
  • 인터럽트 처리기와 같은 형태로 정의되고 처리

범용 레지스터

  • AX: 산술 연산
  • CX: 시프트/회전 연산과 루프
  • DX: 산술 연산과 I/O 명령
  • BX: 데이터의 주소를 가리키는 포인터 (세그멘티드 모
    드에서는 세그멘트 레지스터 DS로 존재)
  • SP: 스택의 최상단을 가리키는 포인터
  • BP: 스택의 베이스를 가리키는 포인터
  • SI: 스트림 명령에서 소스를 가리키는 포인터
  • DI: 스트림 명령에서 도착점을 가리키는 포인터

세그먼트 레지스터

  • 스택 세그먼트(SS): 스택을 가리키는 포인터
  • 코드 세그먼트(CS): 코드를 가리키는 포인터
  • 데이터 세그먼트(DS): 데이터를 가리키는 포인터
  • 기타 세그먼트(ES): 기타 데이터 가리키는 포인터
  • F 세그먼트: 기타 데이터 가리키는 포인터
  • G 세그먼트: 기타 데이터 가리키는 포인터

예외상황

  • 프로그램 실행 중 발생하는 오류에 대해 처리하는 인터럽트
  • set_trap_gate()
    - 인터럽트 처리기를 인터럽트 벡터 테이블에 후킹

메모리 보호

  • 프로세스가 다른 프로세스나 운영체제 영역을 접근하지 못하도록 하는 하드웨어적 기능 제공

타이머

  • CPU 스케줄링 주기에 따른 타이머 인터럽트 생성
    - 타이머 인터럽트 처리기 실행
    - 스케쥴링 등 실행
    • 250Hz (25ms)에서 1000Hz (1ms) 정도의 주기
  • 시간간격 타이머는 일정 간격으로 타이머 인터럽트 생성

클럭

  • time-of-day clock: 현 시점의 시각 및 날짜 확인

부트스트래핑

  • 초기 운영체제 구성요소를 메모리에 적재하는 것
  • BIOS(Basic Input/Output System)에 의해 수행
    - 전원이 켜지면, 컴퓨터에 의해 맨 처음 실행되는 부팅 펌웨어
    • BIOS 칩에 저장
    • 하드웨어 초기화 실행
    • 보조기억장치의 부트섹터로 부터 부트스트래핑 코드를 메모리에 적재
  • 부트스트래핑 코드가 실행되어 메모리에 운영체제 적재
  • UEFI(unified extensible firmware interface)
    - 2TB 이상 저장장치, 빠른 부팅 지원

부트스트래핑 과정

1. 하드웨어 정보 수집 및 시스템 초기화
2. 부트 섹터에서 부트스트래핑 코드를 주기억장치에 적재
3. CPU가 부트스트래핑 코드 실행
4. 보조기억장치에서 운영체제를 주기억장치에 적재

LINUX 부팅 과정

1. BIOS 시행
2. 부트로더 적재
3. 부트로더
	- 커널의 메모리 적재
4. 커널 압축 해제
5. start_kernel() 호출
	- 인터럽트 핸들러 설치, 메모리 설정, 장치와 드라이버 초기화 등
6. idle 프로세스 시작
7. 스케줄러 시작
8. init 프로세스 시작
	- 다양한 비 운영체제 서비스와 구조, 사용자 환경 구성 제공
9. 디스플레이 매니저 데몬
	- 기본적인 그래픽 스택과 로그인 매니저 제공

버퍼

  • 입출력 전송하는 중에 데이터를 일시적으로 보관하는 저장 공간
  • 용도
    • 속도 차이가 있는 장치간의 통신
    • 비동기적으로 처리할 데이터 저장
    • 비동기적으로 신호 전달

스풀링 (spooling; simultaneous peripheral operations on-line)

  • 프로세스와 저속 입출력장치(프린터 등)에 디스크 등을 사용하여 버퍼링을 구현하는 것
  • 프로세스가 주변장치의 서비스 요청 준비 상태에 상관없이 서비스 요청을 할 수 있게 함
  • CPU에 비해 주변 장치의 처리속도가 느려서 발생하는 대기시간을 줄이기 위해 고안

소프트웨어

디바이스 드라이버

  • 특정 하드웨어나 장치를 제어하기 위한 커널의 일부분으로 동작하는 프로그램
  • 입출력 장치별로 각각 디바이스 드라이버가 커널에 통합되어 실행
  • 메모리에 상주
  • 장치를 파일처럼 취급 가능

API (Application Programming Interface)

  • 응용 프로그램에서 사용할 수 있도록, 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스
  • 라이브러리 형태로 제공
  • 시스템콜 함수는 운영체제 기능을 사용할 수 있도록 하는 API
    - API 함수 내부에서 시스템호출 함수 사용 가능

컴파일

  • 고급 언어를 기계어로 변환
  • 컴파일 과정
    • Lexer: 코드 내의 문자를 토큰 단위로 분리
    • Parser: 문법적으로 맞는 토큰의 집단화
    • 중간 코드 생성기: 문장을 단순한 명령어로 변환
    • 최적화기: 코드 실행 및 메모리 활용에 대한 코드 개선
    • 코드 생성기: 기계어 코드로 변환

링커

  • 별도로 컴파일된 여러 코드를 결합하여 하나의 실행코드 생성
  • 상대 주소를 사용하여 결합
  • 코드 간의 외부참조를 확인
  • 링킹 시기
    • 컴파일시
    • 적재시
    • 실행시

로더

  • 상대주소를 절대주소로 변환
  • 명령어와 데이터를 메인메모리에 적재

펌웨어

  • 특정 하드웨어에 대한 하위 수준 제어를 하는 소프트웨어로 해당 하드웨어 장치에 포함된 것
    ex) BIOS, 임베디드 시스템, 가전 제품
  • ROM, EPROM, 플래시 메모리 등과 같이 비휘발성 저장장치에 저장
profile
으악

0개의 댓글

관련 채용 정보