혼공컴운

[혼공컴운]1주차: Chapter 01 ~ 03(1/2 ~ 1/7) 인증

NinaBaby 2024. 1. 3. 22:30
  • 서적
    1. 구매완료

     

     

     

     

  • Ch01-Ch03 학습 내용
    컴퓨터 구조와 운영체제 50분만에 핵심 개념 정복하기 (ft. 강민철 저자님)
    이번 영상은 외부 강사 특강으로 혼자 공부하는 컴퓨터 구조, 운영체제 책을 집필하신 강민철 저자님께서 컴퓨터 구조, 운영체제에 대해서 50분간 핵심 개념을 강의입니다. 🎁책 선물 이벤트🎁 댓글로 유튜브 인터뷰 시청 후기를 남겨주세요! 정성스럽게 작성해주신 분께 한빛미디어 출판사에서 추첨을 통해 책을 증정해드립니다. 이벤트 기간: 2022.11.3(목) ~ 2022.11.13(일) 당첨자 발표: 2022.11.14(월) 인터뷰 영상 고정 댓글 상품: 혼자 공부하는 컴퓨터 구조+운영체제 책 (10명) 이벤트 참여 방법: 1) 유튜브 댓글에 시청 후기 작성 2) 아래 설문지 응모 https://forms.gle/SAC1AKqXKzrFHjnZ7 - 혼자 공부하는 컴퓨터 구조+운영체제: https://www.hanbit.co.kr/store/books/look.php?p_code=B9177037040 - 혼자 공부하는 컴퓨터 구조+운영체제 전체 강의 목록: https://www.youtube.com/playlist?list=PLVsNizTWUw7FCS83JhC1vflK8OcLRG0Hl - 강민철 저자 유튜브 채널: https://www.youtube.com/channel/UC4Hha9F0LZcOtqyL0F3aNkw --- 이 영상은 한빛미디어의 책 이벤트와 특강 영상을 제공 받아 제작되었습니다. #컴퓨터구조 #운영체제 #특강
    https://youtu.be/LBqJwmFMQHI?si=AWHDii9SmkAu8ni7
    • 컴퓨터 구조 시작

      개발자가 되기 위해서는 프로그래밍 언어 뿐 아니라 컴퓨터의 근간을 알아야 한다.

      컴퓨터 구조를 모르고 단순이 입력만 할 수 있는 개발자와, 컴퓨터 구조를 알고 잇어 컴퓨터를 관조할 수 있는 개발자 사이에는 큰 차이가 있다.


      • 컴퓨터의 근간→ 문제 해결 능력, 성능.용량.비용을 알 수 있게 된다.
      • 어떻게 문제 해결 능력이 느는가?

      → 소스코드가 문제의 원인이 아닐 때:

      문법만 알고 있을 때는 해결하지 못한다.

      → 컴퓨터 구조와 운영체제를 아는 자는 컴퓨터가 미지의 대상이 아닌 분석 대상이 된다. : IT업계에서 필수적인 역량으로 요구함.


      • 성능, 용량, 비용: 프로그래밍 언어의 문법만으론 알기 어려움

      → 개인용 컴퓨터가 아닌, 다양한 사용자들을 위해 컴퓨터를 고르는 잣대는 신중해야 함. → 컴퓨터 구조를 알아야 한다. 클라우드 서비스를 이용하더라도 아는 것이 힘.

      → 컴퓨터 구조는 결국 성능, 용량, 비용에 대한 이야기

      내가 배울 것!


      • 컴퓨터가 이해하는 두 가지 정보: 데이터.

      → 숫자, 문자, 이미지, 동영상과 같은 정적인 정보

      → 흔히 컴퓨터와 주고받는/내부에 저장된 정보를 데이터라 통칭하기도 함.

      • 명령어

      → 컴퓨터: 결국 명령어를 처리하는 기계.

      → 명령어는 컴퓨터를 실질적으로 움직이는 정보이자 내부적인 동작을 이해하기 위해 아주 중요한 정보임.


      • 컴퓨터의 네 가지 핵심 부품

      → 세상에는 다양한 종류의 컴퓨터가 존재함.

      CPU, 메모리, 보조기억장치, 입출력장치.


      • 메인보드: 모든 부품들을 연결시킬 수 있는 판때기.
      • 시스템 버스: 부품들이 서로 정보를 주고받을 수 있는 통로.
      • 메모리: 현재 실행되는 프로그램의 명령어와 데이터를 저장하는 부품.

      → ‘메모리 어디에 저장됐다’ 라는 위치도 존재. 번지수는 메모리 저장 위치를 의미: 위치를 주소로 알 수 있다.

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


      • CPU: 메모리에 저장된 명령어를 읽어 들이고, 해석하고, 실행하는 부품.

      → 내부 구성: ALU-쉽게 말해 계산기(계산을 위해 존재하는 회로들의 모음:산술 논리 연산장치), 제어장치(제어 신호를 내보내고 명령어를 해석하는 장치), 레지스터(작은 메모리)들로 구성됨.

      ** 제어 신호: 컴퓨터 부품을 작동하고 제어하기 위한 전기 신호의 일종.

      (e.g. 메모리 읽기 신호, 메모리 쓰기 신호)

      →1번지에 있는 명령어를 레지스터로 갖고오라.

      ** 레지스터는 일반적으로 CPU 내부에 여러 개가 존재한다.


      • 보조기억장치(usb, sd카드, cd, 하드디스크, ssd 등.)

      주기억장치 RAM: 실행되는 프로그램의 명령어와 데이터를 갖고오고, CPU가 할 일을 가져옴

      → 비싸고, 휘발성임. →보조기억장치가 이를 보완

      보조기억장치

      → 용량이 더 크며, 가격이 저렴하고, 전원이 꺼져도 휘발되지 않음.

      • 입출력장치

      → 컴퓨터 외부와 내부를 연결해 정보를 전달함


      • 메인보드(마더보드)

      → 앞의 핵심 부품들을 연결시켜주는 역할, 정보 통로 역할을 하는 버스가 존재.

      ** 메인보드에 연결된 부품은 버스를 통해 정보를 주고 받음

      ** 버스는 컴퓨터의 부품끼리 정보를 주고받는 일종의 통로.

      ** 다양한 종류의 버스가 있으며, 컴퓨터의 핵심 부품을 연결하는 버스는 시스템 버스임.


      • 시스템 버스의 내부 구성

      → 주소를 주고받는 통로인 주소 버스, 명령어와 데이터를 주고받는 통로인 데이터 버스, 제어 신호를 주고받는 통로인 제어 버스

       

      *** CPU가 메모리의 어떤 정보를 읽으려면?

      → 주소 버스를 통해 읽고자 하는 정보의 주소를 전달받음→ 제어 버스를 통해 메모리 읽기라는 제어 신호를 보냄→ 제어신호로 전달받은 메모리: 해당 위치 메모리 읽기.

      ** 메모리에 어떤 값을 저장하고 싶을 때

      → 데이터 버스를 통해 저장할 데이터를 전달함→ 주소 버스를 통해 저장할 주소를 전달함 → 제어 신호를 제어버스를 통해 전달함: 저장할 값을 해당 위치에 메모리 쓰기.

    • 운영체제 시작

      (시스템)자원이란?

      →프로그램이 실행되기 위해 마땅히 필요한 요소(컴퓨터의 핵심 부품들을 포함)

       

      운영체제란? 자원과 “실행 중인 프로그램”=”프로세스”를 관리하는 특별한 프로그램


      • 운영체제 또한 프로그램이기에 메모리에 저장되어 있음.

      그러나, 운영체제는 특별한 프로그램이기에 사용자 영역이 아닌 커널 영역에 적재되어 있음.

       

      • 운영체제의 역할: 하드웨어와 응용프로그램 사이에 위치!

      → 메모리(자원에 포함)를 관리함. 어떤 프로그램을 어떤 주소에 적재할지 결정함.

      → 운영체제 덕분에 물리적인 메모리 크기보다 더 큰 프로그램도 실행할 수 있음.

      • 메모리에 있는 여러 개의 프로그램은 동시에 실행될 수 있음

      → 실질적으로는(내부) 여러 개의 프로그램이 아주 빠르게(인간이 분간할 수 없는 수준으로) 번갈아가면 실행되고 있는 것임, 메모리에 있는 많은 프로그램들은 실행되려면 CPU를 필요로 함.

      → 운영체제의 CPU 스케줄링: 프로세스 간 우선순위 결정 등의 역할.

      (누가 먼저 실행, 얼마나 오랫동안 실행할지를 결정해 준다.)

       

      • 프로세스 동기화

      → 개많은 프로세스들(다양한 요구조건)이 한번에 난리쳐도 문제없이 작동할 수 있게끔 관리해 주는 것.


      • 시스템 호출

      → 자원의 문지기 역할을 해 자원을 보호한다, 수많은 프로세스들이 자원에 접근해도 문제가 없다. → 운영체제는 자원을 관리하고, 보호까지도 제공하고 있기 때문이다.

      ** 자원에 접근할 때, 하드웨어와 직접적으로 접촉하는 것이 아닌 이 시스템 호출을 통해서만 접근할 수 있게 해 자원을 보호할 수 있게 해준다.


      • 운영체제==정부?

      → 운영체제 또한 정부처럼 관리하는 부분이 자원별로 다양함. 많은 부분에서 정부의 형태와 닮아있음.


      • 운영체제는 사용자를 위한 프로그램이 아니다!

      → 우리가 컴퓨터를 이용할 때는 운영체제를 거의 신경쓰지 않는다

      → 운영체제는 프로그램을 위한 프로그램이다: 프로그램에게 다양한 도움을 제공하기 위한 프로그램이다


      >그래서 프로그램을 만드는 개발자는 운영체제를 알아야 더 넓은 시각에서 이해할 수 있게 된다.

      → 오류 메세지의 경우 내보내는 주체 또한 운영체제 혹은 운영체제와 아주 밀접한 프로그램임: 운영체제를 알면 오류메세지를 더 정확히 파악할 수 있으며, 문제해결능력이 증진된다.

       

    기억해야 할 것!
    1. 프로그램이 실행되기 위해서는 메모리에 저장되어 있어야 한다.
    1. 메모리는 실행되는 프로그램의 명령어와 데이터를 저장한다.
    1. 메모리에 저장된 값의 위치는 주소로 알 수 있다.
  • 기본 미션

    → p. 51의 확인 문제 3번, p. 65의 확인 문제 3번 풀고 인증하기

    → 3 : 빈칸 채우기 - 프로그램이 실행되려면 반드시 “메모리”에 저장되어 있어야 한다.

  • 선택 미션

    → p. 100의 스택과 큐의 개념을 정리하기

    • 스택: 후입선출:LIFO
    • 큐: 선입선출:FIFO
    • push: 스택에 새로운 데이터를 저장하는 명령어
    • pop: 스택에 저장된 데이터를 꺼내는 명령어

     

    • 느낀 점: 저번 학기, 그리고 1학년에서 배운 내용이 주가 되어, 복습하는 듯한 기분이 들었다. 내가 좋아하는 창병모 교수님의 리눅스 서적이 정말 상세히, 이해하기 쉽게 구성된 걸 다시금 깨달았다…