ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Careerthon] 운영 체제 및 컴퓨터의 구조
    네트워크/CS Study 2023. 11. 6. 14:19

    개요

    • 알아야하는 이유
    • 컴퓨터의 구조
    • 운영체제

     

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

     

    개발자는 코드만 잘 짜면 되는 것 아닌가??? => 아니다 이자식아

    언어의 문법 및 기술스택을 늘리는 것 뿐만아니라 컴퓨터의 근간을 알아야 한다.

    왜? 알게된다면 문제 해결 능력과 성능, 용량, 비용을 고려한 프로그래밍이 가능해진다.

    문제해결능력

    분명 동일한 코드를 작성을 했는데도 불구하고 실행이 되지않는 사람도 있다. 그럼 뭐가 문제일까?

    개발환경에서 문제가 없었는데 사용자의 환경(컴퓨터환경)에서 문제가 발생하는 경우가 있을 수 있다.

    이럴 때에는 문법만을 알고 있는경우에는 해법을 찾지 못한다.

    하지만 운영체제를 알고 있다면 좀 다른 부분에서 문제에 대한 고민을 할 수있다.

    내가 입력한 코드 외에 여러방면에서 문제를 해결할 수 있다.

    즉 다양한 사고가 가능함에 따라서 문제해결능력이 올라간다. 

    성능, 용량에 따른 비용 계산

    우리는 현재 서버용 컴퓨터를 구매하는 것이 아닌 클라우드 서비스를 이용한 배포를 대부분 할 것이다.

    어떤 상황이든 성능,용량을 비교해서 가장 최적의 비용을 뽑아내는 것 또한 중요한 부분이다.

    컴퓨터의 구조를 알고 어느부분에서 용량과 성능이 좋아야하는지 알게 된다면 적은 비용을 도출할 수 있는 능력을 갖출 수 있다


    컴퓨터구조

    컴퓨터가 이해하는 정보와 컴퓨터의 4가지 핵심 부품에 대해서 알아봅시다

     

    컴퓨터가 이해하는 2가지 정보

    컴퓨터는 크게 데이터와 명령어 2가지의 정보를 이해할 수 있다.

    데이터는 재료의 역할을 하며 명령어는 컴퓨터를 실질적으로 움직이게 하는 정보로써 데이터를 활용한다. 

     

    컴퓨터의 4가지 핵심 부품

    CPU, 메모리(주기억장치, RAM, ROM), 보조기억장치, 입출력장치

     

    1. 메모리

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

    위치정보와 함께 메모리에 실질적인 값이 저장되어있다.

    • 실행되는 프로그램의 명령어와 데이터를 저장한다
    • 프로그램이 실행되려면 메모리에 저장되어 있어야 한다
    • 저장된 값은 주소로써 알 수 있다

    2. CPU

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

     

    내부구성

    • ALU (산술논리연산장치) : 계산을 위해서 존재하는 회로들의 모음 (그냥 계산기)
    • 레지스터 : CPU 내부의 작은 저장장치
    • 제어장치: 제어신호를 내보내고, 명령어를 해석하는 장치
    • 제어신호: 일종의 전기신호인데 컴퓨터 부품들을 관리하고 작동시키기 위한 것임 (메모리 읽기신호, 쓰기신호)

     

    실행 과정

    1. 제어장치에서 제어신호를 내보낼 것임
    2. 1번주소에 있는 명령어를 실행하고 싶다
    3. 메모리 읽기 제어신호를 보내서 메모리에서 1번주소에 있는 명령어를 레지스터로 가져옴
    4. 레지스터로 가져온 명령어를 제어장치에서 해석할 것임 이때 메모리 읽기신호를 보내서 필요한 데이터를 또 가져옴
    5. 이제 ALU에서 계산을 할 것임
    6. 그 결과를 레지스터에 저장할 것임
    7. 2번주소에 있는 명령어를 실행할 것임
    8. 메모리쓰기 제어신호를 보내서 비어있는 메모리에 저장할 것임

     

    3. 보조기억장치

    전원이 꺼져도 보관을 할 수 있다.(저장이 가능하다)

    용량도 훨씬 크고 가격도 저렴하다.

    주기억장치는 크게 2가지로써 RAM과 ROM이 있는데 이 중에서 RAM은 보조기억장치에 비해서 비싸다 또한 전원이 꺼지면 저장된 내용을 잃는다 (휘발성 저장장치의 특성)

     

    4. 입출력장치

    모니터 키보드 마우스 스피커 스캐너 등등...

     

    5. 기타요소

    메인보드

    컴퓨터의 부품을 연결시키는 판

     

    시스템버스

    버스라는 통로를 통해서 컴퓨터의 부품들끼리 정보를 주고 받을 수 있다그 중에서도 가장 중요한 버스가 시스템 버스임

    • 주소버스
      • 읽고자하는 주소를 이 버스를 통해서 보냄
    • 데이터버스
      • 데이터버스를 통해서 저장하려는 값 또는 읽으려는 값이 이동한다.
    • 제어버스
      • 제어신호를 보냄 읽기 또는 쓰기 신호


    운영체제

    window android macOS iOS... 이런것들임

    자원

    컴퓨터가 실행되기 위해서 마땅히 필요한 요소

    4가지부품도 자원 중 하나이다

    운영체제란 이 자원들을 관리하고  실행중인 프로그램을 관리하는 특별한 프로그램이다.

    메모리 내부에서도 커널영역이라는 특별한 공간에 존재한다. 

    그 외의 공간을 사용자의 영역이라고 한다.

    이 사용자의 영역에서 실행되는 프로그램 및 자원을 관리하는 것이 운영체제임

     

    예를 들어서 게임을 실행하려고 하는데 이 게임이 메모리에 어디에 저장 될지 결정하는 것이 운영체제임 그리고 사용하지 않는 프로그램을 종료하는 것이라던가

    자원과 메모리를 관리하는 게 이런 모습임 

    물리적으로 메모리의 크기가 내가 가진 메모리보다 크다면??? 그래도 실행은 가능함 

    페이징과 스와핑 개념을 통해서 가능하다는데 나중에 알아보자

     

    CPU관리(CPU 스케줄링)

    여러개의 프로그램이 CPU를 필요로할 때 어떻게 할당할지 결정해준다.

    ex) 게임과 메모장과 인터넷을 실행하고 있다면 3개를 아주 빠르게 번갈아가면서 실행하는 것이다.

    실행하기 위해선 CPU가 필요하기에 누구먼저 할당할지 얼마나 오래실행할지 등등 운영체제가 결정해준다

    프로세스를 어떻게 관리하는지를 알아야하기때문에 운영체제를 꼭 알아야한다.

    자원을 보호할 수 있는 수단을 제공한다

    실행중인 사용자 프로세스는 운영체제를 통해서 자원에 접근을 한다 (보호하기 위해서) 시스템 호출

     

     

    운영체제를 알아야하는 이유

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

    그렇기에 개발자의 입장에서는 운영체제를 알아서 동작을 이해하는 게 좋다.

    오류메세지에 대해서 깊게 이해가 가능하다.

     

     

     

     

     

     

     

     

    '네트워크 > CS Study' 카테고리의 다른 글

    [Careerthon] 페이징과 세그멘테이션  (0) 2023.11.07
    [Careerthon] 메모리  (0) 2023.11.07
    [족쇄 2.0] React controlled Form vs uncontrolled Form  (1) 2023.10.12
    [Why?] CRA => Vite  (1) 2023.10.02
    [CS study] 개발자도구  (0) 2023.09.06

    댓글

Designed by Tistory.