본문 바로가기

카테고리 없음

혼자 공부하는 컴퓨터구조 + 운영체제 1~3Chapter 요약정리

 
혼자 공부하는 컴퓨터 구조+운영체제
이 책은 독학으로 컴퓨터 구조와 운영체제를 배우는 입문자가 ‘꼭 필요한 내용을 제대로 학습’할 수 있도록 구성했다. 뭘 모르는지조차 모르는 입문자의 막연한 마음에 십분 공감하여 과외 선생님이 알려주듯 친절하게, 핵심 내용만 콕콕 집어 준다. 〈컴푸터 구조〉편에서는 컴퓨터를 이루고 있는 부품들과 각 부품의 역할을 알아본다. 또한 컴퓨터 내부의 구조와 작동법을 이해하고, 컴퓨터가 어떻게 명령어를 처리하는지 학습한다. 〈운영체제〉편에서는 운영체제의 필요성을 배운 뒤 앞서 배운 컴퓨터의 부품들을 운영체제가 어떻게 사용하는지 전체 과정을 살펴본다. ‘전공서가 너무 어려워서 쉽게 배우고 싶을 때’, ‘개발자가 되고 싶은데 뭐부터 봐야 하는지 모를 때’ ‘기술 면접을 제대로 준비해야 할 때’ 다른 입문서에서는 알려주지 않았던 진짜 컴퓨터 공학 지식을 〈혼자 공부하는 컴퓨터 구조+운영체제〉에서 만나 보자! 42명의 베타리더와 함께 입문자에게 꼭 맞는 난이도, 분량, 학습 요소 등을 적극 반영했다. 어려운 용어와 개념은 한 번 더 풀어 쓰고, 적절한 예시와 이해하기 쉬운 그림으로 누구나 이해할 수 있도록 구성했다. 또한 일상 소재를 활용한 비유를 활용하여 어렵게 느껴질 수 있는 컴퓨터 구조와 운영체제를 머릿속에 직접 그리듯이 설명해 준다. ‘혼자 공부해 본’ 여러 입문자의 초심과 눈높이가 책 곳곳에 반영된 것이 이 책의 가장 큰 장점이다.
저자
강민철
출판
한빛미디어
출판일
2022.08.16

혼자 공부하는 컴퓨터주고 + 운영체제 책 표지

 

안녕하세요 !
혼공단 11기로 선정 되어

공부하게 된 박지영입니다 🙂

앞으로 매주 1회 혼자 공부하는 컴퓨터구조 + 운영체제 요약을 올릴 예정입니다.

파이썬, 빡공단 C언어 등 많은 프로그래밍 요약을 올리고 있을거니
다른 글도 많은 관심 부탁드립니다 🥰

 

 

Chapter 01 컴퓨터 구조 시작하기

01-1 컴퓨터 구조를 알아야 하는 이유

 

프로그래밍 강의나 책에 나오는 예제의 코드를 작성해볼 때
가끔씩 똑같이 썼는데도 Error가 나는 문제들이 있습니다.

 

하지만

컴퓨터 구조이해하고 있다면

문제상황을 빠르게 진단하여 문제해결 할 수 있습니다.

 

그리고

컴퓨터를 구매할 때 여러가지 많은 컴퓨터 들 중에

 

어떤 CPU를 사용할지, 어떤 메모리를 사용할지에 따라

성능, 용량, 비용이 달라지기 때문입니다.

 

( 참고 : 클라우드 서비스(AWS) )

 

 

01-1 컴퓨터 구조의 큰 그림

 

컴퓨터 구조

- 컴퓨터가 이해하는 정보 (데이터, 명령어)

- 컴퓨터의 네 가지 핵심 부품 (CPU, 메모리, 보조기억장치, 입출력장치)

 

컴퓨터는 0과 1로 표현된 정보만을 이해한다.

크게 두 종류가 있는데

데이터명령어이다.

 

데이터 : 정적인 정보(명령어 없이는 아무것도 못함 -> 정보덩어리)

ex. 이미지, 동영상

 

명령어 : 데이터를 움직이고 컴퓨터를 작동시키는 정보

 

결론

명령어는 컴퓨터를 작동시키는 정보이고,

데이터는 명령어를 위해 존재하는 일종의 재료이다.

 

컴퓨터의 4가지 핵심 부품

- 중앙처리장치(CPU)

- 주기억장치(메모리(RAM))

- 보조기억장치

- 입출력장치

 

컴퓨터의 4가지 부품과 보조기억장치 / 입출력장치 (39P)

 

메모리 : 현재 실행되는 프로그램의 명령어와 데이터를 저장하는 부품

프로그램이 실행되려면 반드시 메모리에 저장되어있어야한다.

 

메모리에 저장된 값을 빠르고 효율적이게 접근하기 위해 

주소라는 개념이 사용. (저장된 값의 위치는 주소로 알 수 있다)

 

CPU : 컴퓨터의 두뇌

CPU 구조 : 산술논리연산장치(ALU), 레지스터, 제어장치

 

산술논리연산자(ALU) : 계산기느낌(연산)

레지스터 : 작은 임시 저장 장치

 

제어장치 : 제어신호라는 전기신호를 보내고 명령어를 해석하는 장치

-> 메모리 읽기(저장된 값 읽기), 메모리 쓰기(메모리에 저장 할 때) 2가지 제어신호가 있다.

 

보조기억장치 : 전원이 꺼져도 저장된 내용을 잃지 않고 보관하는 메모리

ex. 하드디스크, SSD, USB 메모리, DVD 등

 

입출력장치 : 마이크, 스피커, 프린터, 마우스, 키보드처럼

컴퓨터 외부에 연결되어 컴퓨터 내부와 정보를 교환하는 장치

(보조기억장치도 입출력장치라고 할 수 있다 : 주변장치)

 

컴퓨터의 핵심 부품 : 메인보드(마더보드)

통로 : 버스 (가장 중요한 버스는 시스템 버스)

 

시스템버스주소버스, 데이터버스, 제어버스로 구성

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

데이터 버스 : 명령어데이터를 주고받는 통로

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

 

메인보드와 시스템보드 (47P)

 

 

Chapter 02 데이터

02-1 0과 1로 숫자를 표현하는 방법

 

정보단위

- 비트(bit) : 0과 1을 나타내는 가장 작은 정보 단위

ex. 0을 꺼짐, 1을 켜짐 (전등)

- 바이트(byte) : 여덟 개의 비트(bit)를 묶은 단위, 비트보다 한 단계 큰 단위 (1byte == 8bit)

(1kB, 1MB, 1GB, 1TB도 있다)

 

(워드 : CPU가 한 번에 처리할 수 있는 데이터 크기)

(워드의 절반 크기 : 하프워드, 1배 크기 : 풀워드, 2배 크기 : 더블워드)

 

이진법 : 0과 1만으로 숫자 표현 (컴퓨터표현)

십진법 : 9를 넘어가는 시점에 자리 올림 (사람표현)

 

ex.

십진수 : 1 2 3 4 5 6 7 8

이진수 : 1 10 11 100 101 110 111 1000

 

이진수의 음수 표현 : 2의 보수

 

2의 보수 쉽게 사용하는 법 :

모든 0과 1을 뒤집고(1의보수) 거기에 1을 더한 값(2의보수)

ex. 11 -> 00(모든 0과 1 뒤집기) -> 01(거기에 1을 더한) => 11의 보수 == 01

 

하지만 2의 보수도 숫자가 커진다면 양/음수를 구별하기 어렵다.

양수인지 음수인지 구분하기 위해 플래그(flag) 사용

 

십육진법 : 15를 넘어가는 시점에 자리 올림

ex. 0 1 2 3 4 5 6 7 8 9 A B C D E F 10 11 12 13 ...

 

십육진수 -> 이진수로 변환 (16 -> 2)

ex. 1A2B 1(0001), A(1010), 2(0010), B(1011) 이므로 이어붙이면

0001101000101011이다.

 

이진수 -> 십육진수로 변환 (2 -> 16)

ex. 위에 방법 반대로 하기.

0001101000101011를 4개씩 끊고 16진수로 바꾸면 1A2B가 나온다.

 

 

02-2 0과 1로 문자를 표현하는 방법

 

컴퓨터가 인식하고 표현할 수 있는 문자의 모음 : 문자 집합

ex. {a,b,c,d,e}. a,b,c,d,e는 이해할 수 있지만 f,g는 이해하지 못한다. (배운것만 안다)

 

집합에 속하여도 문자를 0과 1로 변환해야 컴퓨터가 이해할 수 있다.

이를 문자 인코딩이라고 한다. (사람 -> 기계문자)

 

문자 인코딩에서 글자에 부여된 고유한 값 : 코드 포인드

 

0과 1로 이루어진 문자 코드를 사람이 이해할 수 있는 문자로 변환하는 과정을 문자 디코딩이라고 한다. (기계 -> 사람문자)

 

아스키코드(ASCII)

 

48 : 0

65 : A

97 : a

만 기억해도 응용 가능

 

-> 다양한 문자 표현을 위해 확장 아스키 등장 -> 턱없이 부족 -> 한글 인코딩 방식인 EUC-KR이 등장

 

EUC-KR

- 완성형 인코딩 : ex. 가 : 1, 나 : 2 (하나의 완성된 단어에 2byte 크기코드 부여)- 조합형 인코딩 : ex. ㄱ : 01, ㅏ : 001 => 가 : 01001

 

-> 하지만 '쀍 쀓' 이런 단어는 표현 할 수 없다 -> 마이크로소프트 CP949 등장 -> 아직도 한글전체 표현 부족 -> 유니코드 등장

 

유니코드 : 문자의 집합

 

EUC-KR보다 훨씬 다양한 한글을 포함하여 대부분 나라의 문자, 특수문자, 화살표, 이모티콘을 코드로 표현 가능(여러 나라의 문자를 광범위하게 표현 가능)

 

유니코드의 인코딩 방법 중 가장 대표적인 것은 UTF-8입니다.

 

 

Chapter 03 명령어

03-1 소스 코드와 명령어

 

사람을 위한 언어 : 고급언어

기계를 위한 언어 : 저급언어

 

( 고급언어 -(변환)-> 저급언어 )

 

저급언어

- 기계어 : 0과 1로만 이루어진 언어

- 어셈블리어 : 기계어의 문제점(읽기 어려움)을 해결하기 위해 등장. 읽기 편한 형태로 변역한 저급언어

 

컴파일 방식으로 작동하는 프로그래밍 언어 : 컴파일 언어

인터프리트 방식으로 작동하는 프로그래밍 언어 : 인터프리터 언어

 

컴파일언어

- 대표적 C

- 컴파일 : 저급언어로 변환하는 과정

- 컴파일을 수행해 주는 도구 : 컴파일러

=> 이렇게 변환 된 코드를 목적코드라고 한다.

 

인터프리터 언어

- 대표적 python

- 소스코드를 한줄씩 한줄씩 차례대로 실행 ( 실행속도 느림 )

- 수행을 도와주는 도구 : 인터프리터

 

소스코드에 오류가 발생한다면 ?

컴파일언어 : 아무것도 출력안하고 error(전체 한번에 분석하기 때문)

인터프리터언어 : 오류 전까지는 출력하고 error(하나하나 분석하기 때문)

 

(링킹이라는 작업 기억하기)

 

 

03-1 소스 코드와 명령어

 

명령어연산코드오퍼랜드로 구성

 

연산코드 : 흰색 배경 필드값

- 데이터전송, 산술/논리연산, 제어흐름변경, 입출력제어 ex. 더하라, 빼라

 

오퍼랜드 : 연산에 사용할 데이터 or 연산에 사용할 데이터가 저장된 위치 (주소필드)

- 오퍼랜드가 몇개있는지에 따라 (숫자)-주소 명령어로 된다. ex. 0-주소명령어(1개도 없다)

 

연산코드 == 연산자 , 오퍼랜드 == 피연산자

 

연산코드가 담기는 영역 : 연산 코드 필드

오퍼랜드가 담기는 영역 : 오퍼랜드 필드

 

연산코드에 사용할 데이터가 저장된 위치, 즉 연산의 대상이 되는 데이터가 저장된 위치 : 유효주소

 

데이터 위치 찾는 방법 : 주소 지정 방식

 

주소 지정 방식

- 즉시 주소 지정 방지 : 직접 명시하는(ex. ~~해)

- 직접 주소 지정 방식(ex. ~~에, ~~게, ~~해)

- 간접 주소 지정 방식 : 직접 지정 방식보다 표현할 수 있는 유효주소의 범위가 넓어졌지만 느리다.

- 레지스터 주소 지정 방식 : 직접 주소 지정 방식과 같지만 CPU 내부에 직접적으로 접근해서 더 빠르지만 크기의 제한이 생길 수 있다.

- 레지스터 간접 주소 지정 방식 : 간접 주소 지정 방식보다 빠르다.

 

스택 : 저장공간

- LIFO(리포, 자료구조라고도 불림) : 후입선출(마지막 저장 데이터부터 뺀다)

- FIFO(큐라고도 불림) : 선입선출(가장 먼저 저장된 데이터부터 뺀다)

 

스택에 새로운 데이터를 저장하는 명령어 : PUSH

스택에 저장된 데이티를 꺼내는 명령어 : POP

 

이렇게 혼공단 컴퓨터구조 + 운영체제 1주차 1~3파트 요약 정리를 마쳤습니다.

 

이제 미션을 해볼까요??

 

# 진도 기본 미션 선택 미션
1주차
(1/2 ~ 1/7)
Chapter 01 ~ 03 p. 51의 확인 문제 3번, p. 65의 확인 문제 3번 풀고 인증하기 p. 100의 스택과 큐의 개념을 정리하기

 

 

 기본 미션 인증

p. 65의 확인 문제 3번
p. 51의 확인 문제 3번

 

선택미션의 개념은
위에 요약정리에 있어요 !


이렇게 1주차를 마쳤는데

10기때 더 열심히 못한게 한이 맺혀서

이번에 다시 이렇게 열심히 하게 되었습니다!

꼭 우수혼공단이 되었으면 좋겠어요 !!

근데 저만 항상 그런가요,,?
맨날 할때마다 페이스북이 비활성화 되어서 새로새로 계정을 파네요...