ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [운영체제] 02. 컴퓨터 아키텍쳐
    CS/OS 2023. 5. 16. 00:05

    02.  컴퓨터 아키텍쳐 

     

    응용프로그램 - 운영체제 - 하드웨어 

    응용프로그램은 하드웨어에 대해 직접 접근 불가 , 반드시 운영체제 통해서 접근 

    하드웨어 모두 운영체제의 배타적 독점적 지배 받음( 추상화 하기 위해서 )

     

    컴퓨터 하드웨어 구성 (필수 : CPU, 메모리 )

    CPU : 명령어 해석하여 실행하는 장치 (메모리 읽어서 작업 수행)

    메모리  : 명령어 저장하고, 필요한 데이터 저장하는 곳 . 주소를 통해 구분 

    나머지 주변장치  : 입출력장치, 저장장치 

     

    버스 (BUS)

    메인 보드에 연결된 각 장치들은 메인보드 내 버스를 통해서 통신

    -> cpu가 버스를 거쳐서 메모리에서 데이터를 읽고 쓴다 

     

    데이터 버스 (다음 클럭 사이클에 해당 데이터 입출력)

    주소버스 (메모리에 읽고 쓰고자 하는 위치의 주소)

    제어버스 (Read, Write) 

     

    폰노이만 구조 ' 메모리에 프로그램 적재 후 실행 '

    →버스 → 병목현상 → 메모리계층구조  → 캐시 

     

    폰노이만 구조 

    프로그램 보통 저장장치에 저장되어 있음 파일 형태 

    cpu가 프로그램 실행 시키려면 메인 메모리에 적재되어있어야함 

    디스크 - 메모리 - cpu (버스로 통신)

    병목현상 발생  : 읽어야 할 데이터가 버스의 크기보다 큰 경우 , 메모리에 많은 입출력 동시 발생

    메모리가 cpu보다 느려서 메모리 늘 병목에 시달림 (cpu대기시간!)

    해결

    1. 물리적 설계 ( 메모리클럭 늘리기, 듀얼채널, cpu와 위치 가깝게 )

    2. 구조적 설계 ( 버퍼도입 , 버퍼 : 데이터 전달 간 임시 저장 장치)

     

    메모리계층구조 

    cpu에 대한 버퍼 (cpu가 메모리에 접근) 

    캐시 : 앞으로 사용될 것이라 예상(지역성)되는 데이처 미리 임시저장

    가까운 캐시 우선 방문으로 데이터 접근 

    cachehit (있을 때 ), cachemiss (없을 때)

     

    프로그램 작동원리 

    cpu의 구조 

    산술논리연산장치(ALU) :논리연산 수행

    제어장치(Control Unit) :명령어 (cpu가 해석할 수 있는 기계명령)에 따른 작업 지시 

    레지스터 : 데이터 임시보관 

     

    기계어 코드가 메모리에 적재되어야하며, cpu가 순차적으로 읽어가며 지정된 동작 수행 

    실제 연산/ 작업 모두 레지스터 거쳐 수행 (메모리- 레지스터 - 제어 장치- 연산장치)

     

    명령어 처리과정 

    패치 (프로그램 코드를 PC를 통해 순차적으로 읽음) > 디코드 (명령어 해석) > 실행

     

    메모리 보호 

    시분할로 여러프로그램 동시 실행 -> 영역 침범

    메모리 보호기법 segmentation

    1 .시작주소 = 경계레지스터 

    2. 메모리 크기(마지막 주소까지의 차) = 한계레지스터 

    3. 작업 중 주소범위 벗어나는지 하드웨어적으로 점검 

    4. 벗어나면 -> 인터럽트 발생, 강제종료 segmentation fault 

     

    부팅 : 컴퓨터 켰을 때 운영체제를 메모리에 올리는 과정 (올리도록 ROM에 하드웨어적 저장 되었음)

    부트로더 : 운영체제 실행 시켜주기 위한 프로그램 (ROM)

    하드웨어 점검 후 미리 약속한 저장장치의 약속된 위치의 프로그램 실행 시킴 

    ROM 하드웨어 점검 - 메모리에 부트로더코드(마스터 부트레코드) 올려서 실행 - 운영체제 

     

     

    다중 프로그래밍 ~ 대화형 구조 , 중간에 끼어든 작업에 대한 처리 방법 

     

    Polling : cpu가 가서 확인 (단점 : CPU가 pull 할때까지 대기)

    폴링 주기 - cpu 작업 처리 속도와 관계 (높을수록 좋음)

     

    interrupt : 외부장치가 알려주는 것 , cpu 필요시에만 외부장치와 통신

    (장점 :cpu 활용률 / 단점 : 인터럽트 동시 발생 Interrupt vector, Nested Interrupt)

    외부장치가 cpu 사용해야 할때 , IQR(interrupt ReQuest) 전송 

    과정 (1. 현재 cpu 레지스터, 상태 저장 2. ISR(interrupt service routine)실행 3. 다시 수행하던 프로그램 이어서 처리)

     

    단점 : 폴링과 인터럽트는 cpu가 주관해서 데이터 이동 처리에 시간 낭비 

     

    DMA : cpu 개입 없이 메모리와 하드웨어 장치간 데이터 전송 

    DMA 컨트롤러가 버스 제어하고 I/O(하드웨어장치)와 메모리간 전송 제어

    장점 1. 인터럽트 발생 횟수 최소화 2. 시스템 효율성 증대 

    동작 모드 

    1. 사이클스틸링 모드 (경제적)

    속도 빠른 CPU가 속도느린 DMA에게 버스 우선순위 줌 

    한번 DMA동작 당 한 워드 정도 데이터 전송시, 

     

    2. 버스트 모드 (배타적)

    DMA인터페이스가 버스 사용권 획득하면 데이터 전송완료까지 버스 사이클 독점

    한번의 DMA동작 당 블록 단위 데이터 전송시 , 

     

    3. Demand Transfer mode 

    DMA가 CPU에 요구한 카운트 만큼 버스 제어권 가짐 

     

    병렬 처리 

    동시에 여러명령 처리 작업 능률 상승 

    1. 병렬성 (실제로 동시에, 멀티코어 멀티스레드)

    2. 동시성 (동시같아 보이는, 싱글코어 멀티 스레드)

    파이프라인 : 명령어 겹쳐서 실행 , 동시성 

    파이프라이닝 : 명령어 여러 단계로 분할하고 각 단계 동시에 처리하는 하드웨어 독립적으로 구성 

    고려사항 1. 상호의존성 없어야 함 2. 각 단계별 처리 시간 일정해야함 3. 전체 작업시간 몇단계로 나눌지 (병렬 처리 깊이 n : 동시에 처리할 수 있는 작업의 개수 , 이론적으로 n크면 성능 크지만, 실제로는 작업 너무 많이 나누면 이동시간 커서 성능 작아짐 ..)

    파이프라인 해저드 : 실제로는 처리시간 일정 x, 처리단계 균등 x 각종 문제 발생 

    1. 구조해저드 : 자원부족한데 서로 다른 명령어로 같은 자원 접근 (자원 충돌)

    해결방안 : 추가자원 확보, 대기 

    2. 제어해저드 : 순차적명령어가 분기에 의해 버려지는 경우 

    해결방안 : 대기, 예측, 우선 실행 

    3. 데이터 해저드 : 미수행된 명령어의 결과값 참조시도

     해결방안 : 대기, 전방전달, 비순차 실행, 코딩 잘하기 

     

    무어의 법칙 : cpu가 2년마다  2배 빨라짐

    암달의 법칙 : 컴퓨터 일부개선이 전체 컴퓨터 시스템에 미치는 영향 수식으로  (주변장치 없이 cpu속도 늘어도 성능 비례 x)

     

     

    'CS > OS' 카테고리의 다른 글

    [운영체제] 05. 스케쥴링  (1) 2023.05.16
    [운영체제] 04. 스레드  (0) 2023.05.16
    [운영체제] 03. 프로세스  (1) 2023.05.16
    [운영체제] 01. OS  (0) 2023.04.17
Diseñada por Tistory.