OS 정리

lsh950223·2020년 6월 24일
0

*하드웨어 - CPU(중앙처리장치) , 메모리 , 입출력 장치로 구성되어있다.

*OS 사용자 관점 - 사용하는 인터페이스에 따라 달라지며, 사용자의 용이성을 위해 설계되고,
자원의 이용에 신경쓰지 않는다.
=> 1. 사용자가 자원을 독점하도록 설계되어있으며, 목표는 사용자가 수행하는 작업을 최대화
2. 다수의 사용자 요구보다는 한 사용자가 사용하기에 적합하도록 최적화

*OS 시스템 관점 - 컴퓨터의 관점에서 OS는 하드웨어와 가장 밀접하게 연관된 프로그램이다.
이는 OS를 자원할당자 라고 볼 수 있다.
=> 1. OS는 자원의 관리자로서 동작하며, 작업을위해 특정 프로그램과 사용자에게 필요한 자원을 할당
2. 운영체제는 제어프로그램이다. 제어프로그램은 컴퓨터의 부적절한 사용을 방지하기 위해
사용자 프로그램의 수행을 제어
3. 운영체제는 특히 입출력 장치의 제어와 작동에 깊이 관여

*OS의 정의 - 완벽한 정의는 할 순 없지만, 유용한 컴퓨터 시스템을 만드는 과정에서 발생하는
문제점을 해결하기위한 적절한 방법이다.
- 무어의 법칙 : 1960년대 집적회로의 트랜지스터 수가 매 18개월마다 배가할 것이라고 예측
=> 1. 다양한 프로그램들은 입출력 장치의 통제와 같은 공통적인 연산이 필요한데,
여기에 자원을 제어하고 할당하는 공통 기능을 하나의 소프트웨어로 통합한 것
2. 운영체제는 컴퓨터에서 항상 수행되는 프로그램으로 일반적으로 커널이라 불린다.
3. 휴대용 장치의 운영체제에서 종종 핵심 커널 외에 미들웨어 응용 개발자에게 추가 서비스를 제공하는 소프트웨어 프레임워크 집합을 포함한다.
- 미들웨어 : 컴퓨터 제작 회사가 사용자의 요구대로 만들어 제공하는 프로그램, 운영체제와 응용 소프트웨어의 중간에서 조정과 중개의 역할을 하는 소프트웨어

*컴퓨터 시스템 구성
* 컴퓨터 시스템 연산
1. 현대의 범용 컴퓨터 시스템은 공유 메모리에 대한 접근을 제공하는 공통버스에 의해 연결된
여러개의 장치제어기와 하나이상의 CPU로 구성 각 장치 제어기는 특정 장치를관리하고 있다.
2. 컴퓨터 구동을 시작하기 위해서는 초기 프로그램(부트스트랩 프로그램)을 가져야한다.
2-1 전형적으로 부트스트랩 프로그램을 펌웨어라고 알려져있는 컴퓨터 내의 읽기 전용 메모리 EEPROM에 저장되며 , 이는 CPU 레지스터로 부터 장치 제어기 메모리내용 등을 포함한 시스 템의 모든면을 초기화 함
2-2 부트스트랩 프로그램은 운영체제를 적재하는 방법 및 수행을 시작하는 방법을 알아야 하며, 이를 달성하기 위해서 부트스트랩 프로그램은 운영체제의 커널을 찾아 메모리에 적재해야함
3. 커널이 적재되고 수행시작하면 시스템과 사용자에게 서비스를 제공할 수 있다. 일부 서비스는 커널이 아닌 시스템 프로그램에 의해 제공되며, 이들은 부트 시에 메모리에 적재되어 커널이 수 행되는동안 계속 수행되는 시스템 프로세스나 시스템 디먼이 된다.
이러한 단계를 수행 한 후, 시스템이 완전히 부트된 상태이며, event 발생을 기다린다.
-시스템 디먼(데몬) : 사용자가 직접적으로 제어하지 않고, 백그라운드에서 돌면서 여러작업을 하는 프로그램
-시스템 프로세스 : 실행중인 프로그램 (프로그램은 보조기억장치에 존재하며, 실 행되기를 기다리는 명령어와 정적인 데이터의 묶음)
4. event가 발생하면, 하드웨어나 소프트웨어로 부터 발생한 인터럽트에 의해 신호가 보내진다.
=> 하드웨어는 어느순간이든 시스템 버스를 통해 CPU에 신호를 보내 인터럽트 발생
=> 소프트웨어는 시스템호출(모니터호출)이라 불리는 특별한 연산을 실행, 인터럽트 발생
5. CPU가 인터럽트 되면, CPU는 하던 일을 중단하고, 즉시 고정된 위치로 실행을 옮긴다.
-고정된 위치는 일반적으로 인터럽트를 위한 서비스 루틴이 위치한 시작 주소를 가짐
인터럽트 서비스 루틴의 실행이 완료되면, CPU는 인터럽트 되었던 연산 재개 (그림참고)
*인터럽트
1. 적절한 서비스 루틴으로 제어를 전달 , 이러한 전달을 처리하는 직선적인 방법은
인터럽트 정보를 조사하는 일반적인 루틴을 호출하는 방법, 이 루틴은 고유의 핸들러를 호출
2. 사용가능한 인터럽트의 수가 미리 정의되어 있으므로, 인터럽트 루틴에 대한 포인터들 의 테이블을 이용 할 수 있다. 이 경우 중간 루틴을 둘 필요 없이, 테이블을 통하여 간 접적으로 인터럽트 루틴 호출됨 일반적으로 포인터들의 테이블은 하위 메모리에 저장
3. 인터럽트가 요청되면, 인터럽트를 유발한 장치를 위한 인터럽트 서비스 루틴의 주소를 제공하기 위해, 이 주소의 배열인 인터럽트 벡터가 인터럽트 요청과 함게 주어진 고유 의 유일한 장치번호로 색인
4. 인터럽트 구조는 인터럽트된 명령의 주소를 반드시 저장해야 한다.
6. 최근 구조들은 시스템 스택에 복귀주소를 저장한다. 만약 인터럽트 루틴이 처리기의 상태를 변 경 할 필요가 있다면(EX. 레지스터의 값 변경) 인터럽트 루틴은 반드시 명시적으로 현재의 상태 를 저장하여야 하며, 복귀하기 전에 상태를 복원해야 한다.
7. 인터럽트를 서비스 한 후, 저장되어 있던 복귀 주소를 프로그램 카운터에 적재하고, 인터럽트에 의해 중단되었던 연산이 인터럽트가 발생되지 않았던 것처럼 다시 시작한다.

*저장장치 정의와 표기
1. 컴퓨터 저장장치의 기본단위는 비트, 한 비트는 0과 1 두 값 중 하나를 가진다.
2. 바이트는 8비트이고 대부분의 컴퓨터에서는 갖아 작은 편리한 저장장치 조각이다.
3. 컴퓨터 저장장치는 대부분 컴퓨터 처리량과 마찬가지로 바이트 단위 및 바이트의 집합을 단위로
측정되며 조작
4. 1킬로바이트 (KB) = 1024 byte 1메가바이트(MB) = 1024 * 1024 byte
1기가바이트 (GB) = 1024 * 1024 * 1024 byte 1테라바이트(TB) = 1024 *1024 *1024 *1024 byte

*저장장치 구조
1. CPU는 명령어를 단지 메모리부터 가져올 수 있으므로 프로그램을 수행하려면 프로그램이 반드시 메모리 에있어야 한다. 범용 컴퓨터는 대부분의 프로그램을 주 메모리(RAM)라 불리는 재기록 가능한 메모리에서 가져옴 , 주메모리는 DRAM 이라 불리는 반도체 기술로 구현
2. 모든 형태의 메모리는 바이트의 배열을 제공한다. 각 바이트는 자신의 주소를 가지고 있으며, 상호작용은 - 특정 메모리 주소들에 대한 일련의 적재(load) 또는 저장(store) 명령을 통해 이루어진다.
- 적재 명령은 주 메모리로 부터 CPU 내부의 레지스터로 부터 한 바이트 또는 한 워드를 옮기는 것이다.
- 반대로 저장 명령은 레지서터의 내용을 주 메모리로 옮긴다. 명시적인 적재, 저장명령 외 CPU는 실행을 위해 자동적으로 주 메모리로부터 명령 적재
3. 폰 노이만 구조 시스템에서 실행되는 전형적인 명령-실행 사이클은 먼저 메모리로부터 명령을 인출해 그 명령을 명령 레지스터(instruction register) 에 저장 하고 이어서 명령을 해독하고 메모리로부터 피연산자 를 인출하여 내부 레지스터에 저장하도록 유발할 수 있다.
피연산자에 대한 명령을 실행한 후에 결과가 메모리에 다시 저장될 수 있으니, 메모리장치는 단지 일련의 메모리 주소만을 인식한다는 것을 유의해야한다.
4. 메모리는 주소(instruction counter , indexing , indirection, literal address 등)가 어떻게 생성된지 알지 못하며, 그것이 무엇인지(명령인지, 데이터인지) 알 지 못한다. 그러므로 메모리의 주소가 프로그램에 의 해 어떻게 생성되었는지 무시 할 수 있다.
5. 대부분 컴퓨터 시스템은 주 메모리의 확장으로 보조 저장 장치를 제공.
-보조 저장 장치의 주요요건은 대량의 데이터를 영구히 보존 할 수 있어야 한다!
-가장 일반적인 보조 저장 장치는 자기 디스크이다.
※ 각 저장 장치 시스템은 데이터를 저장하는 기본적인 기능과 이들이 후에 인출될 때 까지 보관하는 기본 기능을 제공하며, 이들 다양한 저장 장치 시스템 간의 주된 차이점은 속도, 가격, 휘발성 등이 있다.
6. 여러 저장 장치는 휘발성 , 비 휘발성 중 하나이다.
휘발성 저장장치는 전원이 제거되면 저장하고 있는 내용 모두 잃음
그러므로 데이터를 보관하려면 반드시 비 휘발성 저장장치에 기록해야한다.
*반도체 디스크는 다수의 종류가 존재하나, 일반적으로 자기디스크보다 빠르며 비휘발성이다.
- 한 종류의 반도체 디스크는 데이터를 휘발성인 큰 DRAM 배열에 저장하며 숨겨져 있는 자기 하드디스크와 예비 전력용 배터리를 포함하고 있어, 전원이 중단되면 반도체 디스 크의 제어기가 데이터를 ram으로부터 자기 디스크로 복사한다. 외부 전원이 복원되면 그 데이터를 다시 RAM으로 복사한다.
- 플래시 메모리(반도체 디스크 중 다른 종류) 는 DRAM에 비해 속도는 느리지만 데이터 를 유지하기 위한 전원을 필요로 하지 않는다.
- NVRAM은 배터리 예비전원을 가진 DRAM이다.

*입출력 구조 - 저장 장치는 컴퓨터 내의 여러 형태의 입출력 장치중 하나이다.
1. 범용 컴퓨터 시스템은 공통 버스에 의해 연결된 여러개의 장치 제어기와 CPU들로 구성, 각 장치 제어기 가 특정 타입의 장치를 담당한다. 장치 제어기에 따라 하나 이상의 장치가 부착될 수 있다.
ex) SCSI (Small Computer Systems Interface) 제어기에는 7개이상 장치를 붙일 수 있음
2. 장치 제어기는 약간의 로컬 버퍼 저장장치와 특수 목적용 레지스터의 집합을 유지
*통상적으로 운영체제는 각 장치 제어기마다 디바이스 드라이버를 가지고 있음.
3. 디바이스 드라이버는 장치 제어기의 적절한 레지스터에 필요한 값 적재한다.
3-1 장치제어기는 이어 취할 동작을 결정하기 위해 이들 레지스터의 내용 조사
3-2 장치로부터 자신의 로컬 버퍼로 데이터 전송 시작
3-3 데이터 전송 완료 시, 인터럽트를 이용하여 디바이스 드라이버에 통보
3-4 디바이스 드라이버는 제어를 운영체제에 반환하고 이 때 입력 완료인 경우에는 데이터 또는 데이터에 대한 포인터를 같이 반환 가능
3-5 다른동작에 대해 상태정보 반환
※이 인터럽트 구동 방식의 입출력은 적은 양의 데이터를 전송하는 데에는 문제가 없으나, 대량의 데이터를 전송하는데에 높은 오버헤드를 초래한다!
=> 이 문제를 해결하기 위해 직접 메모리 접근(DMA) 장치가 사용!
-DMA : Direct Memory Acess

*컴퓨터 시스템 구조
*단일 처리기 시스템 - 사용자 프로세스의 명령어를 포함하여 범용 명령어 집합을 수행 할 수 있는 하나의 주 CPU를 가짐
1. 대부분 시스템들이 특수 목적의 전용 처리기를 가지고 있다.
- 시스템의 구성요소들 간의 데이터를 빠르게 전송할 수 있는 입출력 처리기와 같은 범용 처리기에 가까운 형태로 제공될 수 있음
2. 모든 전용 처리기들은 제한된 명령어 집합을 실행하고, 사용자 프로세스를 실행하지 않는다.
ex) 디스크제어기 마이크로프로세서는 주 CPU로부터 연속된 요청을 받아들여 자기 고유의 디스크 큐와 스케쥴링 알고리즘 구현하며, 이 배합은 CPU가 직접 디스크 스케쥴링을 해야하는 오버헤드를 감소시킨다.
3. 범용 CPU가 하나 있는 시스템은 단일 처리기 시스템이다.
*다중 처리기 시스템 - 매우 밀접한 통신을 하는 하나 이상의 처리기들을 가지며, 컴퓨터 버스와 때로는 클 락, 메모리와 주변 장치를 공유한다.
*우아한 퇴보 : 하드웨어의 수준에 비례해 계속적인 서비스를 제공하는 능력
*결함 허용 : 어떤 시스템은 어느 한 구성요소의 고장에도 불구하고 동작을 계속 할 수 있음
1. 비 대칭적 다중 처리 (asymmetric multiprocessing) : 각처리기에 특정 테스크가 할당 하며, 하나 의 주 처리기가 시스템을 제어한다. 다른 처리기들은 주 처리기의 명령을 수행하 거나 미리 정의된 테스크를 수행한다.
2. 대칭적 다중처리 (symmetric multiprocessing) : 모든 처리기가 대등하며, 처리기간의 주종관계가 없다.
각 처리기가 자신의 레지스터 집합과 사유(로컬) 의 캐시를 갖는다. 하지만 모든 처리기는 메모리를 공유한다.
이 구조는 SMP구조이며, IBM사가 개발한 AIX 라는것도 있다. 이 모델의 장점은 중대한 성능 저하를 일으키지 않고 많은 프로세스들이 동시에 수행 될 수 있다.
※데이터가 해당 처리기로 올바로 전달 될 수 있도록 주의햐야한다. 또한 CPU가 분리되어 있기 떄 문에 한 CPU가 쉬고있는 상태에서 다른 CPU는 부하가 과다하여 비효율을 야기 할 수 있다.
3. 대칭적 다중처리와 비 대칭적 다중처리 차이점 - 하드웨어나 소프트웨어의 결과
3-1 특수한 하드웨어가 다중처리기들을 차별화 할 수 있으며, 한개의 주 처리기와 다수의 종 처리기를 허용하도록 소프트웨어를 설계 할 수도있다.
3-2 다중처리에서는 계산 능력을 늘리기 위해 CPU를 추가한다. 만일 CPU가 통합된 메모 리 제어기를 가졌다면, CPU를 추가하면 시스템에서 주소지정 가능한 메모리의 양을 늘릴 수 있다. 다중처리는 메모리 접근 모델을 균등 메모리 접근에서 비 균등 메모리 접근으로 변경하게 만들 수 있다.
3-3 CPU를 설계하는 최근 경향은 하나의 칩에 여러개의 코어를 포함시키는 것이다. 이러 한 다중 처리기 시스템은 멀티코어라 불린다.
※ 블레이드 서버가 가장 최근에 개발된 형태이며, 블레이드 서버는 다수의 처리기 보드 및 입출력 보드, 네트워킹 보드들이 하나의 새시 안에 장착되는 형태를 가진다. 블레이드 서버와 전통적인 다중 처리기 시스템과의 차이점은 각 블레이드 처리기보드는 독립적으로 부팅될 수 있고, 자기 자신의 운영체제를 수행한다.

  1. 주 메모리는 모든 필요한 프로그램과 데이터를 영구히 저장하기에는 너무 작다
  2. 주 메모리는 전원이 공급되지 않으면 그 내용을 잃어버리는 휘발성 저장 장치이다.
    다중 처리기의 장점
  3. 증가된 처리량 : 처리기의 수를 증가시킴으로써 짧은시간 동안 더 많은 일을 수행한다.
    하지만, 모든 부분이 정확히 동작하도록 유지하기 위해 약간의 오버헤드가 유발
  4. 규모의 경제 : 여러개의 단일 시스템에 비해 비용을 절약 할 수 있다.
  5. 증가된 신뢰성 : 여러개의 처리기에 적절히 분산된다면 한 처리기가 고장나더라도 시스템이 정지하는게 아니라 단지 속도만 느려지게 된다. 그러므로 모든 처리기가 고장이 나야 고장이된다.
    ex) 10개의 처리기를 가지고 한개가 고장나면 10%정도 느리게 수행
profile
C++ 공부하고있는 대학생입니다.

0개의 댓글