티스토리 뷰

개념/운영체제

하드웨어 및 소프트웨어

상어악어 2022. 3. 11. 11:15
반응형

1.하드웨어 구성요소

  • 메인보드(cpu,메모리)
  • 버스 -> 연결
  • 프로세서
  • 클럭
  • 메모리 계층구조
  • 보조기억장치
  • DMA
  • 주변장치

 

메인보드

 

cpu 전기에너지 -> 열에너지 

쿨링시스템이 필요하다

 

메인보드가 나오면서 cpu꽂을수있게됐다

컴퓨터가 예전처럼 커질 이유가 사라짐

 

 

cpu, register 엄청 빠름

memory도 빠름

 

노스 브리지

CPU와 메모리, 고속 그래픽카드, Southbridge 등

고속 통신 제어

 

사우스 브리지

input/output 입출력장치는 속도가 느림

저속 장치에 대한 연결 지원

 

장치마다 속도가 다르고

그 속도를 제어하기위해 브리지가있음

 

 

버스

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

 

시스템 버스에는

제어 버스(control bus), 주소 버스(address bus), 데이터 버스(data bus)가 있다

 

 

프로세서

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

캐시를 사용하면 속도 향상 가능

캐시에서 데이터를 잘 찾아오면 캐시 히트

못찾아오면 캐시 미스라고한다

 

 

 

i-7 옥탈코어

cpu 4개

물리적으로는 4개 논리적으로는 8개

실제로 8개를 사용하고 있다

 

 

속도의 차이를 극복하기위해

운영체제가 동작하는 방식이 달라지게됐다

 

 

클럭

  • 컴퓨터 시간은 사이클(cycle) 단위로 측정
  • system clock generator에 의해 발생
  • 프로세서 속도는 GHz 단위

 

 

메모리 계층 구조

위로 갈수록 성능이 좋고 속도가 빠르고 비싸며 공간이 작은반면

아래로 갈수록 성능은 떨어지지만 가격은 싸지고 공간은 커진다

 

 

 

메인 메모리

SRAM(static RAM) : 고속, refresh 불필요

DRAM(dynamic RMA) : 고집적도, 저가

 

 

보조기억장치

나중에

 

 

DMA(Direct Memory Access)

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

보조기억장치 접근 속도가 느린것을 극복하기위해 dma사용

이유는 cpu가 빠른데 메모리,보조기억장치가 느리기때문에

 

 

 

 

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

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

 

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

특권 명령어(privileged instruction)

  • 사용자 프로그램에서는 사용할 수 없고 관리 프로그램만이 사용이 가능한 명령

사용자 모드(User mode)

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

커널 모드(Kernel mode)

  • 특권 명령어 및 특권자원(privileged resource) 사용 가능

 

실행모드 나눈 이유

만약 365일 24시간 돌아가야하는 프로그램이 있는데,

사용자 모드에서 이 프로그램을 종료시킬 수 있게 만들면 안되기때문에

사용자모드, 커널모드를 나눈 것이다

 

 

 

 

커널모드 전환 원인

interrupt발생 ->interrupt handler-> 모드바뀜

인터럽트 <- 하드웨어적(외부 주변장치)

트랩 <- 소프트웨어적(프로그램, 시스템호출)

예외상황

 

인터럽트 핸들러 == 인터럽트 서비스 루틴(ISV)

  • 커널 모드 전환
  • 레지스터 내용 저장
  • 서비스 처리기 실행

 

인터럽트

1. 외부에서 하드웨어적으로 인터럽트 사건(event) 발생

2. 실행중인 프로그램 중단

3. 인터럽트 발생하기전의 상태를 프로그램 카운터 레지스터에 저장

4. 인터럽트 벡터 테이블에 특정 인터럽트 번호에 대응하는 인터럽트 처리기의 주소를 저장

5. 명령어 실행 사이에 인터럽트 요청 여부 확인 및 인터럽트 처리기 호출

 

 

 

 

레지스터 내용 == 인터럽트 발생하기전의 상태를 저장해놓고

인터럽트 처리하고와서 (멈춰)  아까하던일 해야하는게 개념적으로는 맞지만

아닐수도 있다 (다른 더 중요한 일을 해야할수도있으니까)

이걸 선택하는애는 cpu scheduler이다

 

 

instruction register program counter register

program counter register에 인터럽트 벡터 테이블 주소 저장함

끝나면 cpu scheduler가 ㅣㄹ행되어 p1안하고 p2함

 

 

cpu 스케쥴러가 타이머 인터럽트가 발생되면 다음녀석의 정보를, 멈췄던 위치의 상태값들을

선택함?

 

 

인터럽트가 발생하면

커널모드로바뀌고 프로그램 카운터 레지스터에 현재 명령어 저장하고

인터럽트벡터테이블가서 해당 번호 찾아서

저장하고 인터럽트처리기 실행하고

cpu 스케쥴러에따라 다음 프로그램 실행

 

트랩

직접 명령어를 사용하여 호출

 

 

스택 세그먼트 함수

데이터 세그먼트 전역변수

 

eax에 몇번인터럽트부를건지 넣는다

system call도 함수(운영체제에서 제공하는)

80 -> system call

eax에 4가 있음

4번 인터럽트 ㄱㄱ

 

 

 

예외상황 (exception)

인터럽트 벡터 테이블에 인터럽트 처리기의 주소를 넣는 것을

후킹이라고 한다

 

 

메모리 보호

프로세스가 다른 프로세스나 운영체제 영역을 접근하지 못하도록

하는 하드웨어적 기능 제공

 

 

타이머

  • CPU 스케줄링 주기에 따른 타이머 인터럽트 생성

-> 타이머 인터럽트 처리기 실행(스케쥴링 등 실행)

  • 250Hz(25ms)에서 1000Hz(1ms) 정도의 주기
  • 시간 간격 타이머(interval timer)는 일정 간격으로 타이머 인터럽트 생성

 

 

부트스트래핑

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

 

 

 

부트스트래핑 과정

 

부트스트래핑이 초기 운영체제 구성을 주기억장치(메모리)에 적재하는 건데,

초기 운영체제의 구성은 부트스트래핑 코드라고 하고,

이 코드는 보조기억장치의 부트섹터란 곳에 저장되어있다

 

그래서 부트스트래핑 과정은

하드웨어 정보 수집 및 시스템 초기화를 해주고,

부트섹터에서 부트스트래핑 코드를 가져와 주기억장치에 적재하고,

CPU가 주기억장치의 부트스트래핑 코드를 실행하면

보조기억장치에서 운영체제를 주기억장치에 적재하게 된다

 

 

 

 

LINUX 부팅 과정

1. BIOS 시행

2. 부트로더 적재

3. 부트로더
커널의 메모리 적재

4. 커널 압축 해제

5. start_kernel() 호출
인터럽트 핸들러(IRQs) 설치, 메모리 설정, 장치와 드라이버 초기화 등

6. idel 프로세스 시작

7. 스케줄러 시작

8. init 프로세스 시작

다양한 비 운영체제 서비스와 구조, 사용자 환경 구성 제공

9. 디스플레이 매니저 데몬

기본적인 그래픽 스택과 로그인 매니저 제공

 

 

 

버퍼

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

 

 

비동기 : 주는애랑 가져가는애 시간이 딱 안맞는거

동기 : 요청과 결과가 동시에 일어나는 것

 

 

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

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

 

 

3. 소프트웨어

  • 디바이스 드라이버
  • API
  • 컴파일, 링커, 로더
  • 펌웨어

 

 

 

디바이스 드라이버

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

 

 

 

 

API(Applicationi Programming Interface)

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

 

사용자가 printf를 쓰면

표준 c 라이브러리가 운영체제의 write을 호출하는 방식을 생각하면 이해가 된다

 

 

 

컴파일

고급 언어를 기계어로 변환

 

컴파일 과정

1. 렉서(Lexer) : 코드 내의 문자를 토큰(token) 단위로 분리

2. 파서(parse) : 문법적으로 맞는 토큰의 집단화

3. 중간코드 생성기(intermediate code generator) : 문장을 단순한 명령어로 변환

4. 최적화기(optimizer) : 코드 실행 및 메모리 활용에 대한 코드 개선

5. 코드 생성기(code generator) : 기계어 코드로 변환

 

 

 

링커

여러개의 파일을 합쳐서 하나의 실행파일로 만드는거

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

 

 

로더

  • 상대주소(relative address)를 물리주소(physical address, 절대주소)로 변환
  • 명령어(instruction)과 데이터를 메인메모리에 적재

 

 

 

펌웨어

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

'개념 > 운영체제' 카테고리의 다른 글

쓰레드  (0) 2022.03.22
프로세스2  (0) 2022.03.18
프로세스  (0) 2022.03.15
운영체제의 발전과정(2)  (0) 2022.03.11
운영체제의 역할과 발전과정  (0) 2022.03.07
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함