Quiz

The operating system (         ) the system and (         ) applications.

(         ) : Stored-program computer model

(         ) : Each processor is assigned a specific task.

(         ) : Each processor performs all tasks

Each (         ) is in charge of a particular device type.

Each device controller has a (         ).

CPU and DC move data from/to main memory to/from (         ).

Device controller notifies CPU of events by generating an (         ).

(         ) = A computer architecture’s native unit of data.


프로그램을 서로가 쓰기 때문에 제어를 해줘야 한다.

운영체제가 그걸 제어해 주는 것이다.

 

크롬이 메모리를 다 가져가지 못하게, 파워포인트가 메모리를 다 가져가지 못하게 하는 것이 운영체제다.

 

 

하지만 정확하게 정의되는 게 아니다.

 

운영체제 : 하드웨어를 잘 사용하게 해주는 소프트웨어

 

컴퓨터를 켰을 때 죽일 수 없는 프로그램 : 운영체제


 

전기를 얻기 위함이다.

 

 

 

매트릭스에서 운영체제는 에이전트들이다.

 

 

얘한테 프로그램 로딩해 주세요 하면 로딩해준다.

운영체제는 운영체제가 메인이 아니다.

problem solving이 목표가 아니라 다른 애들이 문제를 잘 풀 수 있게끔 도와주는 것.

다른 프로그램들이 잘 돌게끔 해주는게 운영체제의 목표이다.


 

프로그램이 잘 돌 수 있는 환경을 만들어주는 것.

하드웨어를 쉽게 쓸 수 있도록 만들어 주는 애

하드웨어 리소스들을 abstract(추상화) 한다.

쉽게 얘기해서 프로세서(CPU), 메모리, storage 들을 abstract해서 보여준다. 

 

 

 

시스템을 잘 조율해줘야 한다.

컴퓨터는 놀아봐야 소용없다. 리소스를 잘 관리해줘야 한다.

무엇보다 컴퓨터 프로그램끼리 싸우는데,

운영체제가 중간에 끼어들어서 잘 조절해줘야 한다.

 

 

 

경찰 같은 역할이다.

시스템을 잘 보호해주고 잘 쓸 수 있게끔 도와주는 역할.

매트릭스 에이전트들은 protect만 한다.

시스템의 효율이 떨어지고 빡빡하다.

 

 

비스타 폭망 이유 : 권한을 허용하겠습니까? 등등 권한을 빡빡하게 만들었다.


운영체제는 시스템을 보호하고, 잘 쓸 수 있게끔 도와준다.

운영체제가 하드웨어 위에서 돌기 때문에 컴퓨터 시스템이 어떻게 구성되어 있는지 대충이라도 알아야 한다.


 

컴퓨터 시스템이 어떻게 돌아가는지 봐보자.

 

 

폰노이만

: 프로그램과 데이터를 메모리에 넣어놓고 동작을 시켜보자 -> 폰노이만 아키텍쳐

 

프로그램과 데이터를 하나의 메모리에 저장하여 사용하는 방식

데이터는 메모리에 읽거나 쓰는 것이 가능하지만 명령어는 메모리에서 읽기만 가능하다

 

 

 

폰 노이만 구조방식은 CPU(Central Processing Unit)와 한 개의 메모리를 사용하여 처리하는

현대의 범용 컴퓨터들이 사용하는 구조 모델이다

 

 

 

 

 

 

 

CPU라는 것을 박아놓고 다음에 뭘 실행해야 할지를 메모리에서 가져와 보자.

이렇게 해놓으면 프로그램을 동작하기가 굉장히 쉬워진다.

모든 컴퓨터는 폰노이만 아키텍쳐를 사용하고 있다.

 

 

 

 

 

 

 

프로세서는 메모리에서 instruction을 가져와서 결과를 계산해서 쓰는 일을 한다.


 

대부분의 프로세서는 general-purpose processor이다.

특정 기능을 빨리 하게끔, 최적화한 프로세서는 special-purpose processor이다.

그래픽 같은거는 오래걸리니까.

머신러닝 트레이닝 하는거도 오래걸려서 이런걸 잘하는 것이 hardware accelerator다.


 

프로세서가 한 개 짜리는 유니 프로세서지만

프로세서가 연산하는 유닛이 한개 이상이면 멀티 프로세서이다.

왜냐면 한 개 가지고 성능을 뽑아내기 힘들어서 이다.

 

뜨끈뜨끈하다거 열이 너무 높아서 뜨거운 수준으로 가게 된다.

하나 갖고는 절대 안되겠다 싶어서 두 개를 놓게되고 이 때부터 멀티 프로세서가 나오게 된다.


 Symmetric Multiprocessing (SMP) 

현실적으로 많이 사용되는 것이 SMP이다.

우리는 SMP에 대해서만 배운다.

여러개의 프로세서를 쓰게되면 서로서로서로 같은 메모리를 보고 있는다.

내가 이 메모리를 쓰면 다른 애들도 쓸 수 있게끔 되어있다.

 

 

 

위의 그림을 보면, 프로세서들이 System Bus와 Memory, I/O를 공유하고 있다.

 

따라서 SMP는 이런 형태로 설계된 하드웨어와 이를 운용하기 위한 소프트웨어를 위한 아키텍쳐라고 할 수 있다. 이는 적절한 운영체제 정책(프로세스 스켸쥴링, 인터럽트, 로드밸런싱)에 따라서 운용되어야 한다. SMP에서 모든 프로세서는 운영체제 코드를 실행하고, I/O 오퍼레이션을 담당할 수 있다. 오늘날 대부분의 멀티프로세서 시스템은 SMP 아키텍쳐를 사용한다.



하나에 칩에다가 연산 코어를 여러개를 넣는다.

우리가 흔히 말하는 멀티코어는 

프로세서들이 한 칩에 있으면 single chip multi processor이고

하나에 칩에 연산하는 코어가 같이 있다.

우리가 보통 얘기하는 멀티코어이다.

 

코어들이 여러개가 한 칩에 있는 걸 볼 수 있다.

코어가 한 칩에 모여있으면 가까워서 빠르다. 돈을 아낄 수 있다.


 

멀티 소켓이 되면, 칩을 서로 다르게 하면 메모리를 공유하기가 힘들다.

메모리가 다르면 느려진다.

NUMA는 서로 다른 칩을 가진 여러개의 프로세스가 있어서 어디는 쉽게가고 어디는 어렵게 가고 그런다.

 

프로그램 짤 때 메모리를 어디에 넣어야 될지 되게 복잡해진다.

이거를 운영체제가 가까운 곳에 할당해주고 그런다.

그래서 운영체제를 하려면 하드웨어를 잘 알아야 한다.

 

그러기 위해서는 컴퓨터의 구조를 잘 알아야한다.


 

★ 구조는 항상 잘 숙지해라

 

CPU가 있고 Bus라는 큰 회로로 연결되어 있고

메모리가 붙어있다.

컴퓨터가 무언가를 읽으려면 버스를 타고 메모리에가서 읽어온다.

다른 장치들도 버스에 붙어있다.

하나의 특정 장치를 관리하는 Controller가 있다.

거기에 디스크를 꽂거나 마우스를 꽂거나 한다.

얘내들도 다 버스로 연결되어 있다.

 

 

 

각각 조그만 양의 메모리들이 붙어있다. 그게 local buffer이다.

키보드를 친다던지 마우스를 누른다던지 그러면 event가 생겨서 controller에 신호가 간다.

그러면 controller는 적당한 전기적인 신호를 바탕으로 메모리의 로컬 버퍼에다가 키가 눌렸다 이런식으로 써준다.

그리고 그 내용을 메인 메모리에 갖다 놓고 CPU가 처리한다.

 

 

 

키보드가 키를 눌리면 컨트롤러가 키 이벤트를 만들어논다.

그러고 나서 CPU의 다리가 각 컨트롤러와 연결되어 있다.

CPU에는 각각의 디바이스 컨트롤러와 연결되어있는 선이 있고,

인터럽트가 발생하면 CPU에게 인터럽트가 발생했다는 걸 알려주고 CPU는 그것을 처리한다.

모든 것이 다 인터럽트 기반이다.


 

CPU가 보통 하고있는 일이 프로세싱 하는 일이 있고 I/O interrupt를 처리하는 두가지 일이 있다.

CPU가 너 데이터좀 옮겨야 겠는데? 하고 너 I/O좀 하렴 하면

I/O device는 일을 하고 다 완료가 되면 CPU야 나 다했어 하고 interrupt를 날려주면

CPU도 interrupt를 처리하고 다시 자기 일을 한다.

 

 

각각의 캐릭터들은 비트와 바이트

'🚦 Server > Operating System' 카테고리의 다른 글

04. Operating System Structures (2)  (0) 2020.03.30
03. Operating System Structures (1)  (0) 2020.03.25
02. System Call  (0) 2020.03.23
Programming Assignment 0  (0) 2020.03.18
00. Welcome aboard ICT332  (0) 2020.03.16
복사했습니다!