컴퓨터 구조와 운영체제
<컴퓨터 구조>
- 컴퓨터가 이해하는 정보
- 데이터: 숫자, 문자, 이미지, 동영상과 같은 정적인 정보. 데이터는 명령어를 위한 일종의 재료
- 명령어: 컴퓨터를 실질적으로 움직이게 정보.
예) 1과 2를 더해라(여기서 1, 2는 데이터)
예) '안녕하세요'를 출력하라(안녕하세요는 데이터)
실제로 컴퓨터는 0과 1밖에 이해하지 못한다. = 기계어
사람이 이해하게 명령어 = 어셈블러
- 컴퓨터의 4가지 핵심부품
세상에는 다양한 컴퓨터가 존재한다(아두이노, 스마트폰, 컴퓨터 등)
- CPU: 메모리에 저장된 명령어를 읽고-해석하고-실행하는 부품이다.
내부 구성으로 ALU(계산기), 레지스터(CPU 내부에 존재하는 저장장치), 제어신호(제어신호 내보내고 명령어 해석하는 장치 / 제어신호: 컴퓨터 부품을 관리하고 작동시키기 위한 전기신호)
- 메모리: 현재 실행되는 프로그램의 명령어&데이터 저장하는 부품. 프로그램이 실행되려면 메모리에 저장되어 있어야 한다. / 메모리 '어디에'저장했다 하는 위치 정보도 존재함.
- 보조기억장치: SSD등. 전원이 꺼져도 프로그램을 저장할 수 있다.
BUT RAM은 전원이 꺼지면 저장된 내용을 잃는다. = 휘발성 저장장치
- 입출력장치: 모니터, 키보드, 마우스 등
- 컴퓨터 구조의 큰 그림
- 메인보드(마더보드)
메인보드에 연결된 부품은 버스를 통해 정보를 주고 받음
버스는 컴퓨터의 부품끼리 정보를 주고받는 일종의 통로
다양한 종류의 버스가 있으나 컴퓨터의 핵심 부품을 연결하는 버스는 *시스템버스임
*시스템버스: 주소버스(주소), 데이터버스(명령-데이터), 제어버스(제어신호)
<운영체제>
윈도우, 안드로이드, 맥오에스, 아이오에스, 리눅스 등
- (시스템)자원
- 프로그램이 실행되기 위해 마땅히 필요한 요소
- 컴퓨터의 네 가지 핵심부품 포함
- 운영체제
- 자원을 관리하는 특별한 프로그램
- 실행중인 프로그램을 관리하는 특별한 프로그램
* 실행중인 프로그램 = 프로세스
운영체제 또한 메모리에 저장되어 있다. but 특별한 영역인 커널 영역에!
- 어떤 역할?
운영체제의 자원(메모리)관리
: 예) 게임을 실행했을 때, 게임은 메모리에 어디에 적재되어야 할 지 메모리가 결정해 준다.
그리고 반대로 실행되지 않는 프로그램은 운영체제는 메모리에서 지워준다.
> 물리적 메모리보다 더 큰 프로그램 -> 페이징, 스와핑 검색해보기
- 어떤 프로세스를 먼저, 얼마나 더 오래 실행?
보통 동시에 실행된다. = 여러 프로그램이 번갈아가며 빠르게 실행되는 것이다.
프로그램들은 실행되기 위해서 CPU가 필요하다.
예) 웹브라우저, 게임, 메모장이 있을때 어디에 CPU를 얼마나 오랫동안, 먼저 할당해줄지에 대해서 운영체제가 관리해 준다.
-> 운영체제의 자원(CPU)관리
- 이렇게 많은 프로그램들이 동시에 실행되는데, 누가 일목요연하게 실행을 관리해주지?
-> 이것 또한 운영체의 프로세스 관리이다.
예) 동시에 프로세스가 실행되야 하는데 먼저 실행되야 하는 프로세스가 있을 수 있다. 이를 운영체제가 관리해 줌
- 수많은 프로세스들이 자원에 마구 직접 접근해도 괜찮을까?
프로세스들은 실행을 위해 자원이 필요한데, 어떤 프로세스가 자원에 접근하더라도 관리해야 함
-> 운영체제의 문지기 역할(시스템 호출)을 통한 자원 보호
예) 어떤 프로그램이 하드디스크에 저장해야 하는 코드가 있다. 그때 이 프로그램이 직접적으로 하드디스크에 접근하는 것이 아니라, 운영체제(문지기 역할)를 통해 하드디스크을 통해 접근하게 된다. => 하드디스크 보호 가능!
운영체제는 응용 프로그램과 하드웨어 사이에 근간이 되는 프로그램이 될 수 있다. like 정부(인력, 돈, 사람들을 어떻게 효율적으로 관리하지?를 고민하는 것)
컴퓨터에 실행에 필요한 요소들(자원)을 가지고 효율적으로 관리해주는 것.
운영체제는 관리해주는 부서들을 따로 관리하는 부분을 나눠놓는 부분이 존재한다.
운영체제를 알아야 하는 이유
- 운영체제는 사용자를 위한 프로그램이 아니다. -> 운영체제는 프로그램을 위한 프로그램이다.
그래서 프로그램을 만드는 개발자는 운영체제를 알아야 한다. (어떻게 동작하는지 알아야 한다.)
- 문제 해결 능력 - 오류 메세지에 대한 깊은 이해
위의 내용은 유튜브 조코딩 영상에서 공부한 내용을 정리한 것입니다.
출처: https://www.youtube.com/watch?v=LBqJwmFMQHI