꼭 필요한 부분은 아닌데 설명을 안하고 넘어가기에는
하드웨어는 너무 방대하고 많은 정보를 포함하고 있습니다.
분량이 너무 많아서 글을 분리하게 되었습니다.
읽기 귀찮으신 분들은 건너뛰셔도 바로 글로 넘어가 주세요!
브라우저는 응용프로그램입니다.
응용프로그램은 "소프트웨어"입니다.
프로그램,프로세스,네트워크, 이미지 등등은
결국 0과 1로 이루어진 전기적인 신호로(=이진법, 기계어)
바뀌어 물리적인 공간(하드웨어)에서 연산되거나 저장됩니다.
결국 운영체제에 대해 설명하려면,
하드웨어가 어떤 것인지 알아야 설명이 가능합니다.
하드웨어란 무엇인지에 대해 먼저 알아보겠습니다.
우리가 컴퓨터와 하드웨어에 대해 흔히 알고 있는 것
여기에서 우리가 눈여겨 봐야 할 것은 1) CPU 2)RAM 입니다.
참고자료 : 마이크로프로세서의 구조
0과 1을 저장 하는 기능은 RAM과 ROM에서 처리합니다.
RAM에는 임시데이터 혹은 현재 사용하는 데이터가 저장됩니다.
ROM에는 장기간 저장할 데이터가 저장됩니다.
HOW?
아래의 그림을 보면, 작은 칩에 여러개의 금속 다리가 보이실텐데요.
이 각각의 금속 다리가, 전기 연결 가능/불가능으로 상태가 변경됩니다.
연결되면 1, 연결이 되지 않으면 0 으로 변경되어 반도체에 저장됩니다.
(*정확한 묘사는 아니지만, 이해를 쉽게 하기 위해 간추린 설명입니다.)
이렇게 저장된 것은 0과 1로 이루어진 숫자이지만 금속다리 하나하나가 엄청나게 작기 때문에
작은 부피의 USB, RAM카드 등으로도 많은 데이터를 저장할 수 있는 것입니다.
아니, 이게 작아봤자 얼마나 작냐구요?
계산은 CPU내에서 처리합니다.
어떻게 처리할까요?
CPU에서는 이진수에 대한 덧셈,뺄셈,곱셈만 가능합니다.
예를 들어, 다리 전체가 8개로 이루어져 있다면
0 = 0000_0000
1 = 0000_0001
으로 표현됩니다.
1이라는 숫자를 더할 때에는
옆자리의 신호를 켜고 본인은 꺼지는 식의 동작을 합니다.
0000_0001 -> 0000_0010
여기서 우리는, 컴퓨터가 0과 1로 이루어진 언어로 되어 잇다는 것이
무슨 말인지 깨달을 수 있었습니다.
위의 설명으로 우리는 2가지를 배웠습니다.
CPU는 계산기이다.
메모리는 계산결과/중간값등을 저장한다.
하지만 계산하는 것이 그렇게 쉽지 않습니다.
숫자(데이터)를 계산하기 위해서는 대략적으로 4가지의 동작이 필요합니다.
추가적으로 이런 일도 필요할 수 있습니다.
그러나 이렇게 세세한 조건들을 모두 하드웨어로 조정하면 범용성이 떨어지게 됩니다.
결국 이런 세부내용을 조정하고 위해 운영체제가 나타났습니다.
운영체제는 많은 역할을 수행하지만 간단하게 압축해보면
하드웨어를 효율적으로 작동시키기 위한 관리
하드웨어와 응용프로그램 사이의 연결
사용자를 위한 인터페이스 제공
으로 나눌 수 있습니다.
하드웨어(CPU,메모리)를 일종의 메모장과 계산기라고 한다면..
OS는
하드웨어(CPU, 메모리)는 0과 1밖에 받아들이거나 출력하지 못합니다.
그러나 기계어(이진법)은 사람이 다루기에는 너무나도 직관적이지 않은 언어형태입니다.
그래서 프로그래머는 HTML/CSS/JS/Python 등등 많은 "프로그래밍 언어"를 사용하고 있습니다.
OS는 이 프로그래밍 언어와 기계어의 간극을 줄여주는 통역사의 역할을 합니다.
어떻게 번역을 하는지에 대해서는
어셈블러/컴파일러/인터프리터 의 키워드로 검색해보시길 바랍니다.
OS는 우리가 GUI(*) 환경에서 컴퓨터를 다룰 수 있게 해줍니다.
옛날에는 우리가 흔히 터미널/cmd라고 부르는 CLI(*)에서만 컴퓨터를 사용할 수 있었습니다.
(* 그래픽 유저 인터페이스 - 마우스와 아이콘을 사용하는 인터페이스)
(* 커맨드 라인 인터페이스 - 키보드와 명령어를 사용해서만 동작)
(* 도스는 이 중간단계라고! 볼 수 있습니다.)
프론트엔드 기준에서는 운영체제에 관하여 관여할만한 일이 별로 없다고 생각됩니다.
백엔드 기준에서는
서버에 많은 요청이 들어왔을 때, 연결이나 프로세스를
어떤 식으로 쓰레드/병렬 형태로 운영할 것인가?
에 대해 찾아보실 만하다고 생각됩니다.
사실 이번 글에 대해서는 비전공자, 그것도 입문자가
더 깊이 찾아보기에는 적절하지 않는 내용이 많은 것 같습니다.
(사실 저도 잘 모르는 내용입니다!)
그래도 혹시 몰라 세세한 내용을 조금 더 적어봅니다.