[혼공컴운]1주차: Chapter 01 ~ 03(1/2 ~ 1/7) 인증
-
서적
- 구매완료
-
Ch01-Ch03 학습 내용
-
컴퓨터 구조 시작
개발자가 되기 위해서는 프로그래밍 언어 뿐 아니라 컴퓨터의 근간을 알아야 한다.
컴퓨터 구조를 모르고 단순이 입력만 할 수 있는 개발자와, 컴퓨터 구조를 알고 잇어 컴퓨터를 관조할 수 있는 개발자 사이에는 큰 차이가 있다.
- 컴퓨터의 근간→ 문제 해결 능력, 성능.용량.비용을 알 수 있게 된다.
- 어떻게 문제 해결 능력이 느는가?
→ 소스코드가 문제의 원인이 아닐 때:
문법만 알고 있을 때는 해결하지 못한다.
→ 컴퓨터 구조와 운영체제를 아는 자는 컴퓨터가 미지의 대상이 아닌 분석 대상이 된다. : IT업계에서 필수적인 역량으로 요구함.
- 성능, 용량, 비용: 프로그래밍 언어의 문법만으론 알기 어려움
→ 개인용 컴퓨터가 아닌, 다양한 사용자들을 위해 컴퓨터를 고르는 잣대는 신중해야 함. → 컴퓨터 구조를 알아야 한다. 클라우드 서비스를 이용하더라도 아는 것이 힘.
→ 컴퓨터 구조는 결국 성능, 용량, 비용에 대한 이야기
내가 배울 것!
- 컴퓨터가 이해하는 두 가지 정보: 데이터.
→ 숫자, 문자, 이미지, 동영상과 같은 정적인 정보
→ 흔히 컴퓨터와 주고받는/내부에 저장된 정보를 데이터라 통칭하기도 함.
- 명령어
→ 컴퓨터: 결국 명령어를 처리하는 기계.
→ 명령어는 컴퓨터를 실질적으로 움직이는 정보이자 내부적인 동작을 이해하기 위해 아주 중요한 정보임.
- 컴퓨터의 네 가지 핵심 부품
→ 세상에는 다양한 종류의 컴퓨터가 존재함.
CPU, 메모리, 보조기억장치, 입출력장치.
- 메인보드: 모든 부품들을 연결시킬 수 있는 판때기.
- 시스템 버스: 부품들이 서로 정보를 주고받을 수 있는 통로.
- 메모리: 현재 실행되는 프로그램의 명령어와 데이터를 저장하는 부품.
→ ‘메모리 어디에 저장됐다’ 라는 위치도 존재. 번지수는 메모리 저장 위치를 의미: 위치를 주소로 알 수 있다.
→ 프로그램이 실행되려면 메모리에 저장되어 있어야 한다.
- CPU: 메모리에 저장된 명령어를 읽어 들이고, 해석하고, 실행하는 부품.
→ 내부 구성: ALU-쉽게 말해 계산기(계산을 위해 존재하는 회로들의 모음:산술 논리 연산장치), 제어장치(제어 신호를 내보내고 명령어를 해석하는 장치), 레지스터(작은 메모리)들로 구성됨.
** 제어 신호: 컴퓨터 부품을 작동하고 제어하기 위한 전기 신호의 일종.
(e.g. 메모리 읽기 신호, 메모리 쓰기 신호)
→1번지에 있는 명령어를 레지스터로 갖고오라.
** 레지스터는 일반적으로 CPU 내부에 여러 개가 존재한다.
- 보조기억장치(usb, sd카드, cd, 하드디스크, ssd 등.)
주기억장치 RAM: 실행되는 프로그램의 명령어와 데이터를 갖고오고, CPU가 할 일을 가져옴
→ 비싸고, 휘발성임. →보조기억장치가 이를 보완
보조기억장치
→ 용량이 더 크며, 가격이 저렴하고, 전원이 꺼져도 휘발되지 않음.
- 입출력장치
→ 컴퓨터 외부와 내부를 연결해 정보를 전달함
- 메인보드(마더보드)
→ 앞의 핵심 부품들을 연결시켜주는 역할, 정보 통로 역할을 하는 버스가 존재.
** 메인보드에 연결된 부품은 버스를 통해 정보를 주고 받음
** 버스는 컴퓨터의 부품끼리 정보를 주고받는 일종의 통로.
** 다양한 종류의 버스가 있으며, 컴퓨터의 핵심 부품을 연결하는 버스는 시스템 버스임.
- 시스템 버스의 내부 구성
→ 주소를 주고받는 통로인 주소 버스, 명령어와 데이터를 주고받는 통로인 데이터 버스, 제어 신호를 주고받는 통로인 제어 버스
*** CPU가 메모리의 어떤 정보를 읽으려면?
→ 주소 버스를 통해 읽고자 하는 정보의 주소를 전달받음→ 제어 버스를 통해 메모리 읽기라는 제어 신호를 보냄→ 제어신호로 전달받은 메모리: 해당 위치 메모리 읽기.
** 메모리에 어떤 값을 저장하고 싶을 때
→ 데이터 버스를 통해 저장할 데이터를 전달함→ 주소 버스를 통해 저장할 주소를 전달함 → 제어 신호를 제어버스를 통해 전달함: 저장할 값을 해당 위치에 메모리 쓰기.
-
운영체제 시작
(시스템)자원이란?
→프로그램이 실행되기 위해 마땅히 필요한 요소(컴퓨터의 핵심 부품들을 포함)
운영체제란? 자원과 “실행 중인 프로그램”=”프로세스”를 관리하는 특별한 프로그램
- 운영체제 또한 프로그램이기에 메모리에 저장되어 있음.
그러나, 운영체제는 특별한 프로그램이기에 사용자 영역이 아닌 커널 영역에 적재되어 있음.
- 운영체제의 역할: 하드웨어와 응용프로그램 사이에 위치!
→ 메모리(자원에 포함)를 관리함. 어떤 프로그램을 어떤 주소에 적재할지 결정함.
→ 운영체제 덕분에 물리적인 메모리 크기보다 더 큰 프로그램도 실행할 수 있음.
- 메모리에 있는 여러 개의 프로그램은 동시에 실행될 수 있음
→ 실질적으로는(내부) 여러 개의 프로그램이 아주 빠르게(인간이 분간할 수 없는 수준으로) 번갈아가면 실행되고 있는 것임, 메모리에 있는 많은 프로그램들은 실행되려면 CPU를 필요로 함.
→ 운영체제의 CPU 스케줄링: 프로세스 간 우선순위 결정 등의 역할.
(누가 먼저 실행, 얼마나 오랫동안 실행할지를 결정해 준다.)
- 프로세스 동기화
→ 개많은 프로세스들(다양한 요구조건)이 한번에 난리쳐도 문제없이 작동할 수 있게끔 관리해 주는 것.
- 시스템 호출
→ 자원의 문지기 역할을 해 자원을 보호한다, 수많은 프로세스들이 자원에 접근해도 문제가 없다. → 운영체제는 자원을 관리하고, 보호까지도 제공하고 있기 때문이다.
** 자원에 접근할 때, 하드웨어와 직접적으로 접촉하는 것이 아닌 이 시스템 호출을 통해서만 접근할 수 있게 해 자원을 보호할 수 있게 해준다.
- 운영체제==정부?
→ 운영체제 또한 정부처럼 관리하는 부분이 자원별로 다양함. 많은 부분에서 정부의 형태와 닮아있음.
- 운영체제는 사용자를 위한 프로그램이 아니다!
→ 우리가 컴퓨터를 이용할 때는 운영체제를 거의 신경쓰지 않는다
→ 운영체제는 프로그램을 위한 프로그램이다: 프로그램에게 다양한 도움을 제공하기 위한 프로그램이다
>그래서 프로그램을 만드는 개발자는 운영체제를 알아야 더 넓은 시각에서 이해할 수 있게 된다.
→ 오류 메세지의 경우 내보내는 주체 또한 운영체제 혹은 운영체제와 아주 밀접한 프로그램임: 운영체제를 알면 오류메세지를 더 정확히 파악할 수 있으며, 문제해결능력이 증진된다.
기억해야 할 것!
- 프로그램이 실행되기 위해서는 메모리에 저장되어 있어야 한다.
- 메모리는 실행되는 프로그램의 명령어와 데이터를 저장한다.
- 메모리에 저장된 값의 위치는 주소로 알 수 있다.
-
-
기본 미션
→ p. 51의 확인 문제 3번, p. 65의 확인 문제 3번 풀고 인증하기
→ 3 : 빈칸 채우기 - 프로그램이 실행되려면 반드시 “메모리”에 저장되어 있어야 한다.
-
선택 미션
→ p. 100의 스택과 큐의 개념을 정리하기
- 스택: 후입선출:LIFO
- 큐: 선입선출:FIFO
- push: 스택에 새로운 데이터를 저장하는 명령어
- pop: 스택에 저장된 데이터를 꺼내는 명령어
- 느낀 점: 저번 학기, 그리고 1학년에서 배운 내용이 주가 되어, 복습하는 듯한 기분이 들었다. 내가 좋아하는 창병모 교수님의 리눅스 서적이 정말 상세히, 이해하기 쉽게 구성된 걸 다시금 깨달았다…
Uploaded by Notion2Tistory v1.1.0