컴퓨터 전원이 켜졌을때 컴퓨터의 구조


- 컴퓨터의 구조
- 하드웨어- 내눈에 보이는것, 운영체제의 관리 대상 ex.모니터, 메모리
- 운영체제
- 응용프로그램 - 포토샵, 한글과 같은 프로그램
- 사용자
os : cpu 스케줄링, 메모리관리, 파일관리, 네트워크 관리, 입출력장치 관리,
h/w : cpu,메모리, 모니터,키보드,마우스
운영체제란
컴퓨터 사용자와 컴퓨터 하드웨어 사이의 중개자 역할
- 운영체제의 목표
- 사용자가 사용하기 편리하게
- 컴퓨터 하드웨어를 효율적으로 사용하여 성능을 향상시키는것
- 운영체제가 하는일사용되는 인터페이스에 따라 달라진다.
- Resource allocator/manager
- 모든 자원을 관리하며 효율과 공정한 자원 사용을위한 결정한다.
- control program운영체제는 kernel 부분과 shell부분으로 나뉠 수 있다.
- 컴퓨터의 잘못된 사용이나 부적합한 사용을 방지한다.
컴퓨터 시스템 구성
하나 이상의 CPU와 장치 제어기들은 공유 메모리에 접근할 수 있도록 공통 버스로 연결
cpu와 장치는 병행 수행하기 때문에 메모리를 사용하기 위해 경쟁함
- 컴퓨터가 시작될때
- POST (power - on -Self Test)- 키보드는 잘 있는지, 메모리는 얼마나 용량이 있는지 등 체크하고 테스트하는것
- Boot Loader - 운영체제가 저장되어있는 하드디스크의 주소를 가지고있어 운영체제를 읽어 RAM에다가 보냄운영체제 커널을 메모리에 적재시킨 후, 커널을 실행한다.
- 시스템은 완전히 부트된 상태(컴퓨터가 켜진 상태)에서 대기(event 발생전까지)
- 시스템의 모든 구성요소를 초기화한다.
- 다중 프로그래밍
- 시대별 변천사5년대 - 하드웨어와 운영체제의 발전70년대 time - sharing system(시분활)의 등장을 통해 여러사람이 하나의 시스템을 사용할때 CPU를 나눠서 사용할 수 있게 해 줌으로서 여러사람이 여러 프로그램을 실행해도 모두가 나만 서비스를 받는다라고 느끼게 해준다.
- 60년대 - 멀티 프로그래밍과 메인메모리를 통한 여러 프로그램 로딩 가능
- 40년대 - NO os
- CPU가 항상 하나의 작업을 수행할 수 있도록 함
- 여러 작업(프로그래밍)을 메모리에 적재하여 운영체제는 실행할 작업을 선택
- 입력값을 받아드리거나 출력할때 cpu가 쉼 → cpu를 사용할때 입력출력관련 디바이스는 놀고있음 → 자원의 효율적 사용 - 여러개의 프로그램을 로드할 수 있는 메인 메모리를 가져옴
- cpu가 쉬지않고 일할 수 있도록 한다.
시분활(time - sharing system)
배경
모니터와 키보드의 등장으로 사용자와의 인터렉티브한 환경 구축(대화식 컴퓨팅)CPU scheduling → 누구를 작업할 것인지 준비 → 스와핑 기술이 필요→가상 메모리 필요
가상메모리는 CPU에서 실행이 되기 위해서는 메인메모리에 로드가 되어야하는데 여러개의 유저가 여러개의 프로그램을 실행시킬려면 메모리가 부족한 경우가 발생 → 하드디스크에 가상메모리를 만들어서 하드디스크의 일부분을 메모리인것처럼 느끼도록 보여줌 → 메모리가 다른 공간에 있지만 그렇게 느끼지않도록 스와핑기술이 필요한것이다.
응답시간은 1초 미만이어야하며 각 사용자는 메모리에 실행 중인 프로그램을 적어도 하나는 가지고있다.
cpu가 빈번하게 다른 작업으로 전환하도록 논리적으로 확장한것
인터럽트
하드웨어와 운영체제가 발전됨에 따라 운영체제가 해야할 일들이 많아졌는데 운영체제가 중개자의 역할을 잘 하기 위해서 응용프로그램과 하드웨어간의 상황를 잘 알고있어야한다.
→ 운영체제에게 각 상태과 상황을 알려주는 도구, 방법 : 인터럽트
- 인터럽트 by 하드웨어
- cpu 외부의 디스크 컨트롤러(ex. 드라이버)나 주변장치(input or output 장치)로 부터 요구되는 것
- 운영체제의 처리를 요하는 상황을 알리기 위해 전기적인 신호를 사용
- 기계검사 인터럽트 - 프로그램을 실행하는 도중에 갑자기 정전이나 컴퓨터 자체 내에서 기계적인 문제가 발생한 경우 - 전원이 꺼진다거나 블루스크린이 뜨는경우
- 외부 인터럽트 - 오퍼레이터나 타이머에 의해 의도적으로 프로그램이 중단된 경우
- 타이머 - time sharing system에서 하나의 프로세스당 자신에게 할당된 시간이 끝나면 쫒겨남 이때 정해진 시간을 타이머가 알려준다.
- 입출력 인터럽트 - 입출력의 종료나 입출력의 오류에 의해 CPU의 기능이 요청되는 경우 ex. 프린트 출력
- 프로그램검사 인터럽트 - 프로그램 실행 중 보호된 기억공간 내에 접근하거나 불법적인 명령 수행과 같은 프로그램의 문제가 발생한 경우
- 다중프로그래밍 환경의 경우 각각의 프로세스에 각각의 영역의 메모리를 할당받음 → 다른 프로그램이 나만의 메모리 공간에 접근하면 문제가 생김
- 인터럽트 by S/W
- 프로그램 실행 중 프로그램 상의 처리 불가능한 오류나 이벤트를 알리기 위한 경우 발생
- 트랩 또는 예외라고 부름 ex. 자바코드중 try/ exception을 생각!
- 존재하지않은 메모리 주소에 접근
- 가장 강력한 대응방법 → 프로그램 종료
- 소프트웨어 만드는 사람자체가 완전하지않기때문에 실수가 발생할 수 있기때문에 항상 예외상황을 준비
- 운영체제는 인터럽트가 발생했을때 어떤 동작?
- 하드웨어가 문제있다고 알려주는 경우, 프로그램이 문제있다고 이벤트(인터럽트)를 날림 → 인터럽트가 들어오면 메뉴얼대로 행동함
- 인터럽트는 인터럽트 서비스 루틴에게 제어권을 넘기게 된다. 종류별로 서비스 루틴이 다르며 모든 서비스 루틴의 주소를 저장하고 있는 자류구조를 인터럽트 벡터라고 한다.
- 인터럽트 서비스 루틴 = 메뉴얼 / 인터럽트 벡터 = 목차
- 인터럽트가 들어오면 하던일을 그대로 두고 다시 갔다가 돌아와야함 단, CPU가 여러개일때
- CPU가 1개일때, 인터럽트 아키텍처는 반드시 인터럽트 된 명령어의 주소를 저장해야함
- 복귀주소, 복귀전의 cpu 상태 복원
- 운영체제는 인터럽트가 발생해야 작동을 시작하는 방식
- 이벤트는 운영체제를 동작시키기 위한 방아쇠역할을 함
- 인터럽트 처리 시간 흐름
- 입출력 인터럽트에 의한 cpu와 I/O의 설명(p.16)
운영체제의 작동
현대 운영체제는 interrupt driven 방식
interrupt driven : 운영체제가 대기모드에 있다가 마우스를 움직여 클릭을 하는것과같은 인터럽트가 발생, 프로그램을 실행하면 하드디스크에 있던 프로그램이 메모리에 로드되고 운영체제에 의해 실행되는 것
- 소프트웨어 인터럽트운영체제 서비스 요청 - 프로그램이 하드웨어를 사용할 수 있도록 중개자역할인 운영체제에게 요청하는 것
- 소프트웨어 오류 - ex. 무한 루프, 다른 프로세스 혹은 운영체제를 수정하려는 행위
- 이중모드운영체제가 자기자신을 다른 시스템 구성요소로부터 보호하기 위한 장치시스템이 사용자 코드 혹은 커널 코드를 실행하고 있는지 구분하는것이며 일부 작업(명령어)들은 반드시 커널의 권한에 의해서만 실행될 수 있도록 한다.유저프로그램이 실행하고있다가 어떤 하드웨어를 사용하고싶을때, 프로그램권한으로 사용할 수 없는 부분이 나올때 요청 → 모드 비트를 바꿈
- 자신의 핵심 기술을 보호하기 위해서 / 운영체제가 침범받지않게 권한이 있는 상황에서 사용할 수 있도록 진행하는것이다.
- shell는 인터페이스로 실질적인 사용자가 운영체제를 사용할 수 있도록 편의를 제공하는 영역이다.
- 커널의 핵심은 운영체제의 주요 업무 → 이런 업무들이 일반 사용자나 프로그램에 의해 공격받게될때 이들을 보호하기위해 모드 체인지를 하게됨(유저모드인지 사용자모드인지)
- 보호 - 소프트웨어 인터럽트가 걸리면 운영체제는 자기 메모리 영역과 문제 프로그램 이외의 다른 프로그램들을 보호하기 위해 작동을함→ 이것들을 방지하기위해 마련해놓은 장치가 듀얼모드(이중모드) ex. 파일 삭제할때 권한요청
- 무한루프, 프로세스 자원 독점을 방지하기 위한 타이머
- 일정 주기마다 컴퓨터에 인터럽트를 발생시키도록 타이머 세팅
- 특권 명령을 통해서 타이머 시간을 어떻게 할것인지 운영체제가 세팅 - 운영체제를 만드는 회사에서 세팅
- 카운터가 0이 되면 인터럽트 발생
- 제어권 : 사용자 프로그램 → 운영체제
저장구조
- registers - CPU내부에 존재하는 저장장치로서 서비스 전체적인 환경변수나 임시적인 값 저장, 작은 저장공간
- 메인메모리(RAM) - CPU가 직접 접근할 수 있는 유일한 대용량 저장 매체 , 휘발성- 내용삭제
- 캐시메모리- 자주사용하는 명령어를 미리 캐시메모리에 저장하여 빠르게 CPU의 속도를 메모리가 맞출 수 있도록 하는 것, 더 빠른 저장장치로 정보를 복사
- 보조 저장 장치- 비휘발성 저장 용량 - 메인 메모리의 확장으로도 사용 가능
- 반도체 디스크(SSD) - 고속 입출력 비휘발성 저장매체로 고용량
- 저장장치 시스템은 계층 구조를 형성함 - 위로 올라갈수록 cpu에 가까움 ,속도가 빠름 ,휘발성, 비싸짐
프로세스 매니지먼트
- 프로세스는 실행 중인 프로그램
- 시스템 안에서의 작업의 단위
- 프로그램 - 실행되지않고 명령어 덩어리들이 저장공간에 저장되어있는것 = 수동적인 개체 / 프로세스 - 저장되어있는 명령어들이 실행되는것 = 능동적인 개체
- 프로세스는 자신의 업무를 수행하기 위해서는 자원이 필요
- CPU, 메모리, I/O,파일
- 초기화를 위한 데이터
- 프로세스는 명령어를 한 번에 하나씩 완료될 때까지 순차적으로 실행
- 프로세스가 종료될 때에는 재사용이 가능한 모든 자원을 반환함
- 운영체제의 프로세스 관리
- CPU 사용을 위한 프로세스 또는 쓰레드 스케줄링(누가먼저 실행될 것인가)
- 쓰레드 : 하나의 프로그램안에 독립적인 일들이 병렬적으로 처리되어지는 일들 - 프로세스보다 저 작은 개념
- 사용자와 시스템 프로세스를 생성하고 제거
- 프로세스 일시중지 및 다시 시작
- 프로세스간 동기화 할 수 있는 기법 제공- 프로세스들이 서로 공유하고 있는 데이터들이 있을때, 순서에 의해서 데이터들이 변형되지않도록 하는 동기화 기법
- 프로세스간 통신할 수 있는 기법 제공
- 교착상태를 처리하기 위한 기법 제공 - 일차선에 양쪽에서 자동차가 오는 경우(이도저도 못하는 경우)해결방법 제공
메모리 관리
- 메모리는 바이트의 대용량 배열, 각 바이트는 자신의 주소를 가짐
- 프로그램 실행에 필요한 데이터 전체 또는 일부가 메모리에 있어야함
- 운영체제의 메모리 관리 - 어떻게 메모리를 할당할 것인지
- 프로세스에 의해 사용중인 메모리 영역 추적
- 어느 프로세스와 데이터를 메모리로 적재하거나 내보낼지 결정하고 필요에따라 메모리를 할당하고 반환
- 메모리 관리 기법은 하드웨어 설계에 좌우된다.
저장관리
- 물리적은 특성은 추상화하여 논리적인 저장 단위인 파일을 정의
- 파일은 파일 생성자에 의해 정의된 관련 정보의 집합체로 디렉토리 단위로 구성된다.
- 운영체제는 파일과 디렉터리를 생성하고 삭제하며 신뢰할 수 있는(비휘발성) 저장장치에 파일을 백업한다.
- 비휘발성 대용량 데이터는 디스트(하드디스크)에 저장한다.
- 운영체제의 대용량 저장장치 관리
- 조각들의 크기가 다 다르기 때문에 생성된 파일을 어디에 저장할지 결정, 빈공간 관리, 저장장소 할당
- 3차 저장장치 - ex. usb, 외장하드
- Mount - 연결 관리/ unmount - 안전하게 컴퓨터와 연결 해제 관리
보안과 보호
- 보호
- 메모리 주소 지정 하드웨어 - 메모리의 논리주소와 물리주소가 변형이 되어질때 자신이 할당받은 메모리 이외에는 접근할 수 없음→ cpu에게 알림
- 운영체제가 자기 스스로를 보호하는것도 있지만 운영체제가 관리하는 하드웨어까지 보호
- 보안
- 내부 및 외부 공격에 대한 시스템 방어- ex, 방화벽, 바이러스 공격
컴퓨터 시스템의 구성
대부분의 시스템은 하나의 범용 cpu를 사용
- 다중처리기 시스템(멀티코어 시스템, 병렬 시스템)의 사용과 중요성이 증가
- 장점
- 증가된 처리량
- 규모의 경제 - 규모가 커지면 처리되는 양이 활성화
- 증가된 신뢰성 - 결함 허용, 다른사람이 다른사람의 역할을 해줄 수 있음두가지 형태
- 두가지 형태
- 비대칭 다중처리 - 하나의 관리자가 있고 나머지가 분배, 각처리기가 특별한 임무를 수행
- 대칭 다중처리 - 다 똑같은 레벨에서 일처리, 각 처리기는 공통적인 임무를 수행한다.
- 장점
- 클러스터 시스템
- 둘 이상의 독자적 시스템 또는 노드들을 연결 - 근거리의 컴퓨터를 연결 보통 SAN를 통하여 저장장치를 공유한다.
- 여러개의 컴퓨터를 물리적으로 연결해서 한컴퓨터가 해야하는 일들을 여러개의 컴퓨터로 동시에 하게 하는 것 - 슈퍼컴퓨터를 만드는것
컴퓨팅 환경
- 모바일 컴퓨팅 - 휴대폰이나 태블릿의 ios나 안드로이드
- 분산 시스템
- 원거리도 네트워크로 연결되어있음 ex. 근거리 통신망(LAN), 광역 네트워크(WAN),대도시 지역 네트워크(MAN), 개인 영역 네트워크(PAN)
- 네트워크 운영체제는 네트워크로 연결된 시스템 간에 기능을 제공한다.
- 하나의 시스템인것처럼 느낌을 받을 수 있다.
- 클라이언트-서버 컴퓨팅 - 클라이언트가 생성한 요청에 서버
- 클라이언트에게 서비스(데이터베이스)를 요청
- Peer - to- Peer computing - 데이터를 줄땐 서버, 데이터를 받을 땐 클라이언트가 됨
- 모든 노드는 peer, 각 peer는 클라이언트, 서버 또는 두개의 역할을 함
- 가상화 - 실제 운영체제 기반 위에다가 가상으로 다른 운영체제를 띄워서 하나의 응용처럼 실행될 수 있게 하는 것
- 애뮬레이션 - ex. 안드로이드 개발 환경
- 클라우드 컴퓨팅 - 컴퓨팅, 스토리지, 앱까지도 네트워크를 통한 서비스로 제공 가능 ex. 구글 서비스
- sofeware as a service -인터넷을 통해 사용할 수 있는 하나 이상의 응용 프로그램 ex. 워드 프로세스, 구글
- platform as s Service - 응용프로그램이 인터넷을 통해 사용할 수 있도록 준비된 소프트웨어 스택ex. 딥러닝, 빅데이터진행→ 코랩
'CS' 카테고리의 다른 글
| chapter05-2 세마포/교착상태 (0) | 2023.05.05 |
|---|---|
| chapter05. 프로세스 / 임계구역 / (0) | 2023.05.05 |
| chapter04. Threads (1) | 2023.01.14 |
| chapter03. 프로세스 개념 및 스케줄러 (0) | 2023.01.13 |
| chapter02.운영체제 구조 및 서비스 (0) | 2023.01.12 |