소연의_개발일지

컴퓨터 구조와 운영체제

 

<컴퓨터 구조>

- 컴퓨터가 이해하는 정보

           - 데이터: 숫자, 문자, 이미지, 동영상과 같은 정적인 정보. 데이터는 명령어를 위한 일종의 재료

           - 명령어: 컴퓨터를 실질적으로 움직이게 정보.

                      ) 1 2를 더해라(여기서 1, 2는 데이터)

                      ) '안녕하세요'를 출력하라(안녕하세요는 데이터)

                      실제로 컴퓨터는 0 1밖에 이해하지 못한다. = 기계어

                      사람이 이해하게 명령어 = 어셈블러

 

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

           세상에는 다양한 컴퓨터가 존재한다(아두이노, 스마트폰, 컴퓨터 등)

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

                      내부 구성으로 ALU(계산기), 레지스터(CPU 내부에 존재하는 저장장치), 제어신호(제어신호 내보내고 명령어 해석하는 장치 / 제어신호: 컴퓨터 부품을 관리하고 작동시키기 위한 전기신호)

           - 메모리: 현재 실행되는 프로그램의 명령어&데이터 저장하는 부품. 프로그램이 실행되려면 메모리에 저장되어 있어야 한다.  / 메모리 '어디에'저장했다 하는 위치 정보도 존재함.

           - 보조기억장치: SSD. 전원이 꺼져도 프로그램을 저장할 수 있다.

                      BUT RAM은 전원이 꺼지면 저장된 내용을 잃는다. = 휘발성 저장장치

           - 입출력장치: 모니터, 키보드, 마우스 등

 

- 컴퓨터 구조의 큰 그림

           - 메인보드(마더보드)

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

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

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

                     *시스템버스: 주소버스(주소), 데이터버스(명령-데이터), 제어버스(제어신호)

 

<운영체제>

윈도우, 안드로이드, 맥오에스, 아이오에스, 리눅스 등

 

- (시스템)자원

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

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

- 운영체제

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

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

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

           운영체제 또한 메모리에 저장되어 있다. but 특별한 영역인 커널 영역에!

 

           - 어떤 역할?

                      운영체제의 자원(메모리)관리

                      : ) 게임을 실행했을 때, 게임은 메모리에 어디에 적재되어야 할 지 메모리가 결정해 준다.

                       그리고 반대로 실행되지 않는 프로그램은 운영체제는 메모리에서 지워준다.

                      > 물리적 메모리보다 더 큰 프로그램 -> 페이징, 스와핑 검색해보기

           - 어떤 프로세스를 먼저, 얼마나 더 오래 실행?

                      보통 동시에 실행된다. =  여러 프로그램이 번갈아가며 빠르게 실행되는 것이다.

                      프로그램들은 실행되기 위해서 CPU가 필요하다.

                      ) 웹브라우저, 게임, 메모장이 있을때 어디에  CPU를 얼마나 오랫동안, 먼저 할당해줄지에 대해서 운영체제가 관리해 준다.

                                 -> 운영체제의 자원(CPU)관리     

           - 이렇게 많은 프로그램들이 동시에 실행되는데, 누가 일목요연하게 실행을 관리해주지?

                      -> 이것 또한 운영체의 프로세스 관리이다.

                      ) 동시에 프로세스가 실행되야 하는데 먼저 실행되야 하는 프로세스가 있을 수 있다. 이를 운영체제가 관리해 줌

           - 수많은 프로세스들이 자원에 마구 직접 접근해도 괜찮을까?

                      프로세스들은 실행을 위해 자원이 필요한데, 어떤 프로세스가 자원에 접근하더라도 관리해야 함

                      -> 운영체제의 문지기 역할(시스템 호출)을 통한 자원 보호

                      ) 어떤 프로그램이 하드디스크에 저장해야 하는 코드가 있다. 그때 이 프로그램이 직접적으로 하드디스크에 접근하는 것이 아니라, 운영체제(문지기 역할)를 통해 하드디스크을 통해 접근하게 된다. => 하드디스크 보호 가능!

           운영체제는 응용 프로그램과 하드웨어 사이에 근간이 되는 프로그램이 될  수 있다. like 정부(인력, , 사람들을 어떻게 효율적으로 관리하지?를 고민하는 것)

           컴퓨터에 실행에 필요한 요소들(자원)을 가지고 효율적으로 관리해주는 것.

           운영체제는 관리해주는 부서들을 따로 관리하는 부분을 나눠놓는 부분이 존재한다.

          

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

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

                      그래서 프로그램을 만드는 개발자는 운영체제를 알아야 한다. (어떻게 동작하는지 알아야 한다.)

           - 문제 해결 능력 - 오류 메세지에 대한 깊은 이해

          

 


위의 내용은 유튜브 조코딩 영상에서 공부한 내용을 정리한 것입니다.

출처: https://www.youtube.com/watch?v=LBqJwmFMQHI 

 

profile

소연의_개발일지

@ssoyxon

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!