1. 운영체제란?

operating system : operating(운영하다, 뭔가를 managing하다) + system(범위 내에서 구성워들 사이에 관계, 역할들을 규정지어 놓은 체계) => 뭔가(컴퓨터)를 운영하기 위해 고안된 시스템

운영체제는 모든 것이 코드로 되어 있는 100% software이다. ex) windows, android, ios.       

windows를 제외한 대부분 운영체제는 unix에서 파생되었다.

 

운영체제의 구조는 아래와 같다. user/developers-application-os-devices

os는 전자장치가 있는 모든 디바이스에 필요하다. 하지만 못 올려서, 올라가지 못 할 수도 있다.

다시 말해 os는 효율성을 위한 프로그램으로, 하드웨어를 제어[관리, 운영]하는 프로그램이다. application을 만들 수 있게 환경도 제공하며, 사용자가 하드웨어와 소통할 수 있도록 중간자 역할을 한다.


2. operation do?

os가 무슨 일을 하냐를 알기 전에, 소프트웨어가 어떤 식으로 작동되는지 알아야 한다. 소프트웨어는 [전자]회로(circuit)를 구동하기 위해 만들어진다. 전자회로란 전자를 흐르게 함으로써, 스위치를 통해 전류를 제어할 수 있는 것이다. 추가적으로 스위치는 위치를 이동시키는 외력이 필요한데, 기계적인 스위치로는 제어할 수 없어 트랜지스터와 같은 전자적인 스위치를 만들었다. 다시 말해 사용자는 소프트웨어를 통해 전기신호로 회로를 제어하는 원리이다.

operation은 하는 일이 크게 두 가지로 나누어진다.

1) abstraction : os가 하는 일은 어플리케이션 위에 user/dev는 하드웨어(어떤 저장장치)에 관계없이 일할 수 있게 해준다. 하지만 조건으로 os가 제공하는 기능만을 이용해야하고, os가 멈추라고 하면 멈추고 다시 시작하라고 하면 다시 시작해야 한다. 즉 os가 시키는 대로만 해야하는 노예가 되어야 한다.

2) managing : resource는 유한한데, 누군가는 이런 자원들을 교통정리 해줘야 한다. 그것이 바로 os가 하는 두 번째 역할이다. 모든 application들을 os가 제어해주는 역할이다. resource[사람]는 한 프로그램[요리도구]밖에 할당이 안 된다고 생각하면 편하다.

위 두 가지 역할로 os가 하는 일을 정리할 수 있다. 귀찮은 제어는 os가 해줄테니, 자원을 뺏거나 부여하는 등 권한들을 os가 갖고 있는 것이다. 다시 말해 하드웨어와 어플리케이션의 중간 역할자로, 충돌을 막아주고 권한을 부여하며 관리 및 제어를 해주는 역할을 하고 있다.


3. Computer system

CPU, memory가 있으면 대부분의 os는 90퍼센트 정도 memory를 관리하는 데 집중한다. memory는 데이터를 담는 공간으로 cpu에게 메모레 있는 숫자를 보내, cpu에서 연산을 수행 후 결과를 다시 memory로 전송하는 방식이다.

system bus라는 개념은 전선(wire)을 얘끼하는 것이다. 디바이스 사이에 시그널이 왔다갔다 할 수 있는 통로이자, 시그널을 주고 받는 일련의 규칙인 통신규약이 될 수도 있다. usb방식은 serial bus이다.

cpu는 계산을 하기 위한 연산장치이고, 여기서 연산장치와 기억(저장)장치의 개념이 나온다. CPU는 자판기와 같이 할 수 있는 정해져 있어 자체적으로 뭘 못하고, 명령에 대한 답만 내리기 때문에 OS입장에서는 CPU를 어떻게 할 수가 없다. CPU가 놀지 않도록 신경만 써주면 된다.

 

연산장치 vs 기억(저장)장치

1) 연산장치 : 연산장치는 각 장치마다 역할이 다르고

2) 기억(저장)장치 : 모든 메모리들이 정보저장을 하는 역할이 같다. ex) DRAM, HDD, SSD 

원래는 sequential한 메모리 접근방식이었다. 그 후 ram(random access memory)이라는 어떤 곳이든지 읽고 쓸 수 있는 메모리가 개발되었고, cpu와 communication이 가능해졌다. 다시 d(ynamic)ram이라는 전압이 떨어져 중간중간에 충전해줘야 하는 메모리가 나왔으나, 속도가 sram보다는 느리다. s(tatic)ram은 충전하지 않아도 유지가 되고 속도도 빠르나, 회로가 복잡하고 많은 부품이 들어가 dram보다 비싸다.

 

CPU와 memory가 통신하는 기본적인 구조

register : cpu가 계산하기 위해 저장하는 공간으로, 일종의 회로 구조라 속도가 무한히 빠르다.

CPU - Main[DRAM] - Second[SSD]의 구조를 띄고 있다.

SSD는 매우 느리나 값이 싸다. 많은 것을 담아두었다가, 실제로 CPU가 사용할 것만 RAM에 옮겨서 사용한다. DRAM이 SSD보다 몇백배 빠르다(CPU에게 정보를 빨리 줘야 하기 때문에). RAM은 전원이 공급되지 않으면 정보가 사라진다는 단점이 있어, 자주 사용하는 애들을 좀 더 빠른 SRAM에 옮겨 모아놓고 CPU와 통신시킨다. (caching)

windows는 SSD에 있고, DRAM에 한 줄씩 옮겨 CPU에서 실행한다. SSD는 윈도우의 위치를 모르기 때문에, 이 위치를 알려주는 것이 bootstrap(바이오스 역할 - 부팅 프로그램을 시작하는 것)이다.

저장장치 계층 : CPU - cache - RAM - (<-휘발, 비휘발->) storage device types(secondary) - input sources

오른쪽으로 갈수록 가격은 싸지고 용량은 커지나 속도는 느리다. 이렇게 저장장치 계층이 나누어진 이유는 가장 효율적인 태스크에 맞는 것들을 적용하기 위해서다. cpu의 성능을 높이기 위해서는 멀티코어를 사용한다. 속도는 열 때문에 높이지 못하고, 오히려 성능이 더 안 좋아진다.


기타 개념

기계 언어 : 0과 1

우리가 쓰는 언어 : python, c, c++

프로그램 코드 = 어셈블리 언어 = add (A,B)

컴파일(어셈블러) : 어셈블리 언어 -> 기계언어

 

메모리와 cpu들을 communicate해야한다. = 신호

bus : 신호가 전달되는 통로 (재질에 따라 전달 속도라 달라진다)

cpu : 연산을 효율적으로 할 수 있는 장치들이 모인 것

bits : 1,0신호(정보량의 기본단위)

1byte : 8bits(2의 8승) (스토리지 크기, 메모리 주소 단위)

ASCII : 1byte(0~256)

1word = 4byte = 32bit (2의 32승 -> 3.7GB / 최대로 표시할 수 있는 정보량 = 한 번에 처리할 수 있는 데이터 양)

memory : 8개 단위로 끊어서 저장한다. (16개면 2개의 바이트, 2개의 메모리주소가 필요하다)

- memory는 지울 수 없다. 메모리를 0으로 채운다해서 지운 게 아니라, 0으로 채워져 있는 것이다. -> 어떤 값을 읽어서 어떻게 번역하냐가 중요하다.

 

User interface

- cli : 키보드 기반(cmd 등)

- gui : 마우스로 클릭하는 환경

- shell : kernel에 명령을 내리는 것, cli는 shell을 이용해 사용한다.

 

Computing environments

- stand-alone : 흔히 하는 데스크탑

- network computers : 클라우딩(좋은 성능의 메인 컴퓨터 - 보조 컴퓨터들), ex) 구글 코랩 , 아마존

- wireless network

- mobile : ios, android

- distributed : 분산 시스템(네트워크를 통해 작업의 분산 - 마치 내 거에서 움직이는 것같은 착각을 불러 일으키는 것이 목표이다), ex) 프루나, 비트코인

- virtualization : 가상환경(vm)

- cloud computing - 구글 드라이브

- real-time embedded sytstems : 자율주행 차의 장애물 감지 프로세스, 광양제철소의 샘물을 나르는 장치

 

1세대 : eniac

2세대 : 트랜지스터(하나의 일 밖에 못함)

3세대 : 여러 일을 할 수 있음, but 효율적으로 일을 할 수 없을까(spooling 등) / time-sharing(동시에 일을 하는 착각)

closed-source : 애플 배터리(성능이 더 좋음)

728x90
반응형

'컴퓨터 공학 > 운영체제' 카테고리의 다른 글

운영체제02 - System structure  (0) 2021.10.20
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 라이프코리아트위터 공유하기
  • shared
  • 카카오스토리 공유하기