Computer Science/자료 구조, 알고리즘

컴퓨터 구조와 운영체제 핵심 개념

JM Lee 2023. 5. 19. 14:46
728x90

컴퓨터 구조를 이해해야 하는 이유

  1. 문제 해결 능력

  •  기본적으로 컴퓨터의 작동 원리에 대해 이해하는 사람은 그렇지 않은 사람보다 훨씬 문제해결이 편하다.
  •  컴퓨터를 관조할 수 있는 능력 배양(분석 능력)

  2. 성능, 용량, 비용

  •  컴퓨터 구조는 결국 이 세 가지를 고려해서 보기 때문에 당연히 고려해야 하는 부분

 

컴퓨터가 이해하고 있는 정보 

 

 1. 데이터

  •  숫자, 문자 등의 정적인 정보
  • 컴퓨터와 주고받는 / 내부에 저장된 정보

 2. 명령어

  • 컴퓨터를 실질적으로 움직이게 하는 정보
  • 데이터는 명령어를 위한 재료
  • 명령 코드를 사람이 쓰면, 컴퓨터는 그것을 자신만의 명령 데이터로 변환해서 사용 ex) binary

 

컴퓨터의 핵심 부품 4개

 

 1. CPU

  • CPU란? : 메모리에 저장된 값을 읽어들이고, 실행하고, 해석하는 장치
  • CPU 내부구성 : ALU, 제어장치, 레지스터
  • ALU : 계산기(계산을 위한 회로들의 모음)
  • 레지스터 : CPU 내부의 작은 저장장치
  • 제어장치 : 제어 신호(컴퓨터 부품 관리, 작동 역할)를 내보내고, 명령어를 해석하는 장치

레지스터에서 연산자들을 꺼내서

제어장치의 제어신호를 통해 데이터를 작성하고

이것들을 메모리로 가져가서 저장하게 함.

 

 2. 메모리

  • 메모리란? : 현재 실행되는 프로그램의 명령어와 데이터를 저장하는 부품
  • 프로그램이 실행되려면 메모리에 저장되어 있어야 한다.
  • 메모리에 저장된 값의 위치는 주소로 알 수 있다.

 

 3. 보조기억장치

  • 보조기억장치란? : 컴퓨터의 중앙처리장치가 아닌 외부에서 프로그램이나 데이터를 보관하기 위한 기억장치
  • 우리가 아는 RAM, ROM 같은 것들이 보조기억장치에 해당
  • 메모리와 달리, 전원이 꺼져도 저장이 가능함.
  • 용량이 메모리에 비해 큰 것에 비해 가격은 저렴함 

 

 4. 입출력장치

  • 입출력장치란? : 컴퓨터 외부와 연결되어 컴퓨터 내부와 정보를 교환할 수 있는 부품
  • 메인보드 : 메인보드에 연결된 부품들은 버스를 통해 정보를 주고 받음
  • 버스 : 컴퓨터의 부품끼리 정보를 주고 받는 일종의 통로

  시스템 버스 : 핵심 부품끼리 연결하는 버스 (메모리를 읽는 과정)

  - 주소 버스 : 주소를 주고받는 통로

  - 데이터 버스 : 데이터를 주고받는 통로

  - 제어 버스 : 제어 신호를 주고받는  통로

 


운영체제

우리가 흔히 알고 있는 Windows, MacOS, LINUX, IOS, Android 같은 것들이 운영체제이다.

운영체제는 무엇이고 우리는 왜 운영체제를 알아야 하는가?

 

<사전 지식>

시스템 자원(resource) : 컴퓨터가 실행되기 위해 필요한 요소,  앞서 말한 컴퓨터 핵심 부품 4가지 역시 자원.

 

운영체제 : 이 자원들을 관리하는 특별한 프로그램, 실행 중인 프로그램(process)을 관리하는 특별한 프로그램

 

앞서 말한 4 가지 부품들은 각자 기능을 수행해서 프로그램이 원활하게 작동되게끔 한다.

그럼 요청은 사용자가 하지만, 이것을 누가 승인하고 실행할까?

우리는 요청만 할 뿐이지, 주소를 어디에 둘 것이며, 데이터를 어디에 둘 것이며, 제어는 어떻게 할지는

일반적으로 요청할 일이 없다.

그렇다면 누가 사용자 영역에 그러한 방식으로 프로그램을 적재했을까? 라는 의문을 가지게 된다.

이것에 대한 해답이 바로 운영체제다.

 

운영체제는 메모리에 적재되고 싶은 process들을 보다 효율적으로 적재해주는 역할을 수행한다.

우리가 생산직 공장에 들어가면 인부들을 매뉴얼에 맞게, 효율적으로 관리해주는 관리자들이 존재하듯이

컴퓨터 상에서는 운영체제가 그 역할을 한다고 보면 되겠다.

 

어떤 프로세스를 먼저, 얼마나 오래 실행할까?

여러 프로그램이 실행된다는 것은, 여러 프로그램이 매우 빨리 번갈아가면서 실행된다는 것이다.

(겹친다는 것은 메모리 상 크나큰 문제를 발생시키는 오류 생성 >> 겹치면 안 됨)

 

프로그램이 실행되기 위해서는 필요한 CPU가 있어야 하는데,

이 CPU를 이용하는 순서와 시간 역시 운영체제가 정해준다.

 

운영체제는 정해주는 것 외에도 문지기 역할 역시 수행한다.

그 예시로 응용프로그램이 하드디스크 쪽으로 접근하려면 운영체제를 거쳐서 접근해야 한다.

아마 하드디스크 외에도 운영체제를 거쳐가야 하는 것들이 있지 않을까..에 대해 궁금했는데

 

"리소스에 접근하기 위해서는 무조건 운영체제를 거쳐야 한다."는 답변을 받았다.
모두 운영체제를 통해 접근하면서 관리의 일관성을 지켜야 하기 때문이다.

 

결론

운영체제를 알아야 하는 이유는

운영체제는 사용자가 아닌 프로그램을 위한 운영체제이기 때문이다.

프로그램을 다루는 사람으로서 운영체제를 깊게 이해한다면

IT에서 만나는 수많은 오류 코드들에 대해 이해하는 것이 보다 빨라진다.

 

프로그래머가 아닌 개발자이기 때문에 모든 것을 다 알 필요는 없지만

그래도 기초능력 정도는 알아야 함


공부&참조영상 : (1) 컴퓨터 구조와 운영체제 50분만에 핵심 개념 정복하기 (ft. 강민철 저자님) - YouTube

감사합니다 튜터님!

'Computer Science > 자료 구조, 알고리즘' 카테고리의 다른 글

버블 정렬  (0) 2023.08.17
해쉬(Hash)  (0) 2023.06.01
스택(stack) / 큐(queue)  (0) 2023.05.21
배열과 리스트  (0) 2023.05.20
시간복잡도/공간복잡도/점근표기법  (2) 2023.05.01