• 혼자 공부하는 컴퓨터 구조 + 운영체제 : 유튜브 강의 정리

    2023. 2. 25.

    by. 옛슬

    오늘은 다른 운영체제 강의를 듣기 전

    강민철 저자님의 컴퓨터구조와 운영체제 50분만에 핵심 개념 정복하기를 듣고 글을 정리해 보았다.


    컴퓨터 구조의 큰 그림

    - 컴퓨터가 이해하는 정보 : 데이터와 명령어

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

     

    메인보드 & 시스템버스

    - 4가지 핵심 부품이 서로 정보를 주고받기 위해 연결 시킬 수 있는 메인보드

    - 서로 정보를 주고 받을 수 있는 통로는 시스템버스

     

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

    - 버스는 컴퓨터 부품끼리 정보를 주고받는 통로

    - 다양한 종류의 버스가 존재함

    - 이 중, 컴퓨터의 핵심부품을 연결하는 버스는 시스템버스

     

    - 시스템 버스의 내부구성 : 주소버스, 데이터버스, 제어버스

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

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

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

     

    메모리

    - 현재 실행되는 프로그램데이터명령어를 저장하는 부품

      * 프로그램이 실행되기 위해서는 메모리에 저장되어 있어야 함.

    - 메모리에 저장된 값의 위치는 주소로 알 수 있음

     

    CPU

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

    - 내부 구성 : ALU, 제어장치, 레지스터

    - ALU (산술논리연산장치) : 계산기

    - 레지스터 : CPU 내부의 작은 저장장치

    - 제어장치 : 제어신호를 내보내고, 명령어를 해석하는 장치

      * 컴퓨터 부품들을 관리하고 작동시키기 위한 전기신호 ( 메모리 읽기 신호, 메모리 쓰기 신호 )

     

    CPU의 내부 구성이 어떻게 작동될까

    예시 : CPU가 1번지 메모리의 명령어를 읽고 싶다고 가정 / 1 번지 메모리에는 "더하라, 3번지와 4번지를"이라는 명령어가 들어가 있음 

    •  메모리에 있는 CPU 내부로 읽어들이기 위해서는 제어장치가 제어신호를 내보낸다 (메모리 읽기 신호).
    •  메모리는 제어신호를 받고 해당 명령어를 CPU의 레지스터에 보낸다
    •  제어장치는 레지스터에 들어온 명령어를 해석한다 → 이 과정에서 제어장치는 3번지와 4번지의 데이터가 필요하다는 것을 알게됨 
    •  제어장치는 메모리 내부의 3,4번지 데이터를 읽기 위한 제어신호를 보냄 (메모리 읽기 신호).
    •  3,4번지의 데이터는 CPU의 레지스터로 들어옴
    •  ALU는 3,4번지를 더한다음 결과 값을 레지스터에 저장
    •  1번지의 메모리 명령어가 끝나면 그 다음 제어장치를 통해 2번지 명령어를 읽기 위한 제어신호를 보냄

    * 이 과정에서 제어신호, 주소, 데이터는 시스템버스를 통해 읽거나 내보낸다.

     

    보조기억장치

    - USD, SSD, CD-ROM 

    - 전원이 꺼져도 보관이 가능 / 저장이 가능

    - 용량이 메모리에 비해 크다

     

    보조기억장치를 쓰는 이유는

    1. RAM과 비교해봤을 때 비교적 저렴하다.

    2. RAM의 경우 전원이 꺼지면 저장된 내용을 잃는다(휘발성 저장장치의 특성).

     

    입출력장치

    - 컴퓨터 외부에 연결되어 컴퓨터 내부와 정보를 교환할 수 있는 부품

    - 모니터, 키보드, 마우스

     

    운영체제

    - windows, android, ios, macOS, Linux

     

    시스템 자원

    - 프로그램이 실행되기 위해 마땅히 필요한 요소

    - 컴퓨터의 4가지 핵심 부품 포함

     

    운영체제

    - 자원을 관리하는 특별한 프로그램

    - 실행 중인 프로그램을 관리하는 특별한 프로그램

       * 실행 중인 프로그램 = 프로세스

     

    ⭐️ 앞서 언급했듯이 메모리에는 실행중인 프로그램의 데이터와 명령어가 저장된다.

          → 운영체제도 프로그램이기 때문에 메모리에 저장된다.

          → 단, 운영체제는 특별한 프로그램이기 때문에 일반 응용 프로그램과 구분되어 저장된다.

          → 운영체제가 적재된 영역은 커널영역이라 일컫음 ( 응용 프로그램은 사용자 영역에 적재됨 )

     

    ❓메모리 내 용자영역의 프로그램은 그럼 누가 적재했을까? 😎 운.영.체.제

          - 운영체제는 자원을 관리하는 특별한 프로그램이라고 했는데 그 중 메모리 관리도 한다.

          - 사용자 영역에 들어오는 프로그램을 어디에 적재할 지 관리하고, 종료된 프로그램은 메모리에서 비워준다.

          - 적재할 프로세스의 물리적 크기가 매모리의 크기보다 클 때도 효율적으로 어떻게 해당 프로세스를 적재하고 관리할 지 결정한다

             페이징 / 스와핑에 대한 이야기

     

    ❓메모리 내 여러 프로세스를 어떻게 동시에 실행할까? (CPU는 하나인데 🥹) 😎 운.영.체.제

         - 엄밀히 말하면 여러 프로세스가 동시에 실행되는거처럼 빠르게 번갈아 실행되도록 하는 것 (눈으로 확인이 어려울정도로 빠르게)

         - 어떤 프로세스를 누가 먼저 CPU를 이용할 지, 얼마나 오래 실행할지 결정하는 것도 운영체제이다. 

            * 이를 운영체제의 CPU관리라고 하며 이를 CPU 스케줄링이라 함.

     

     

    ❓프로세스가 동시에 실행될 때 누가 이 실행을 관리할까? 😎 운.영.체.제

         - 작업 관리자에 들어가보면 현재 실행중인 여러 프로세스를 볼 수 있다.

            * 이렇게 많은 프로세스를 운영체제가 관리하고 있으며 운영체제의 프로세스 관리라고 한다. (개발자가 중요하게 알아야 하는... 😉)

         - 대체 왜 프로세스가 실행하는 것을 관리해야할까? 동시에 실행되는 과정에서 여러 문제점이 있을 수도 있기 때문!

            - 예를 들면, 동시에 여러 프로세스가 실행되는 과정에서 프로세스 A가 B보다 무조건 먼저 실행이 되야하는 조건이 있을 수도 있고,

              여러 프로세스가 어떤 자원에 접근하는 과정에서 동시에 접근이 불가한다든지 다양한 문제점들이 발생할 수 있기 때문

              → 이 때 이러한 복잡한 실행과정을 관리하는 것을 운영체제의  프로세스 동기화라고 함.

     

    ❓프로세스가 자원에 접근할 때 직접해도 괜찮을까?

          - 수많은 프로세스들은 실행이 되기 위해서는 자원이 필요함. 

            * 자원을 보호할 수 있는 수단이 필요함 → 운.영.체.제가 이것도..!

         - 프로세스는 자원이 필요할 때 ( 접근이 필요할 때 ) 운영체제 시스템호출을 통해 접근이 가능하다 (직접적으로 접근 X)

     

    - 운영체제 내에 자원별로 관리하는 방식을 나눠둔다.

    - 운영체제는 사용자를 위한 프로그램이 아니다  프로그램을 위한 프로그램이다.

      (즉, 프로그램을 만드는 개발자는 운영체제를 알아야 한다 ^^)


    복습을 하기 전 큰 그림을 그리기 정말 좋았던 강의!

    음.. 이제는 어느정도 큰 그림은 이해됐는데, 아직까지 이러한 CS지식을 내가 개발하면서 어떻게 연결시켜야하는지는 아직 감은 안온다.

    그래도 공부하다보면 언젠가 딱 필요하다! 라는 생각이 들때가 있겠지

    개인적으로 유튜브 강의가 정말 좋았어서, 복습하면서 유튜브 강의도 같이 들으면 좋을거 같다 😉

     

    참고강의 : 컴퓨터 구조와 운영체제 50분만에 핵심 개념 정복하기

     

     

              

     

     

     

     

     

     

    댓글