개발지식1(작성중)

기록지·2021년 3월 9일
0

1. 운영체제 & 하드웨어


운영체제(OS)는 프로그램들을 실행하는 메인 프로그램.

프로그램들을 실행시키기 위해서는 하드웨어의 자원이 필요하다. 그래서 운영체제는 하드웨어의 자원들을 이용해서 응용 프로그램(EXCEL, KAKAO)을 응용 프로그램을 관리하게 된다.
이 외에도 운영체제는 네트워크 통신, 입출력 장치 관리 등 우리가 컴퓨터 사용에 필요한 모든 것을 관리한다.

cf. 전세계에서 가장 많이 쓰이는 OS는 LINUX. 거의 모든 IT회사에서 사용하는 서버는 LINUX OS를 기반으로 해서 동작하고 있다.
우리가 많이 사용하는 Android OS는 LINUX OS 를 기반으로 만들어졌다. Android 이 외에도 Ubuntu OS, Cent OS 등이 있다.

(심화) 운영체제는 내부에 여러 개의 구성요소로 나뉘게 된다. 그 중에서 '커널'은 바로 프로그램들을 중재하는 역할을 하게된다.
위에서 언급했던 하드웨어의 자원을 이용해 프로그램을 관리하는 역할을 바로 커널이 한다. 보통 운영체제를 만들 때 커널을 기본으로 해서 그 위에 다른 것들을 올라가게 된다.

하드웨어

  • CPU
    CPU는 컴퓨터 시스템을 통제하고 프로그램이 돌아가는 모든 계산을 한다. 그냥 모든 프로그램들이 실행된다는 건 CPU가 일을 하고 있다고 생각하면 된다.

메모리
메모리는 전기적인 신호를 내부에서 임시적으로 저장하는 역할을 한다.
대표적인 역할
1. CPU의 계산 결과를 저장해준다.
2. 프로그램이 실행되는 공간을 제공해준다.

-> 메모리의 용량이 크다는 건, 그만큼 많은 정보들을 처리할 수 있으며, 더 많은 프로그램을 띄울 수 있다는 걸 의미한다.

디스크
디스크는 정보를 영구적으로 저장하는 역할을 한다.
메모리가 프로그램이 실행되는 과정을 책임진다면, 디스크는 프로그램을 컴퓨터에 저장하는 과정을 책임진다.

2. 프로그램

프로세스
프로세스는 실행되고 있는 프로그램을 의미한다. (개발자들이 짠 코드의 집합이 컴퓨터가 이해할 수 있는 코드들로 컴파일된 것)

실제로 프로그램 자체는 코드(명령어)로 구성되어 있다. 그리고 코드를 바탕으로 해서 프로그램을 실행시킨다는 것은 프로세스가 생성되는 것을 의미한다.

프로세스 구성;
프로그램 실행 정보 + 프로그래머가 짠 코드 + 실행되면서 쓰이는 데이터

(심화) 사용자가 컴퓨터를 실행하는 중 음악, 메신저 등을 이용하는 경우에도 키보드입력이 된다.
그 이유는 바로 '인터럽트'라는 것 때문.
운영체제는 프로세스들을 관리하면서 갑작스런 입출력 장치(키보드)의 신호나 예외상황을 자주 겪게 된다. 이때 실행되고 있는 CPU 자원을 잠시 가져와서 갑작스러운 신호를 먼저 처리하게 된다. 이때 CPU가 작업중인 프로세스는 잠깐 멈추는데 이 시간이 굉장히 짧기때문에 사용자는 프로그램이 멈춘다는 느낌을 받지않는 것이다.

프로그래밍 언어
프로그램은 사람이 프로그래밍 언어를 사용해서 만든다. CPU는 O,1 만 읽을 수 있는데 우리가 영어로 짠 코드를 O, 1 로 변환해주는 컴파일 과정이 필요하다.-> 컴파일러의 필요성.

컴파일러는 운영체제와 같이 중요한 시스템 프로그램 중 하나. 보통 우리가 쓰는 프로그래밍 언어는 전부 고급언어이다. 그리고 컴파일러를 통해 저급언어(기계어)로 변환된다.

고급언어 : 사람이 이해하기 쉽도록 사람의 언어로 되어있는 프로그래밍 언어.
EX. C, C++, JAVA, JAVASCRIPT, PYTHON, ...
저급언어 : 컴퓨터가 바로 이해할 수 있도록 만들어진 프로그래밍 언어.
EX. 기계어. 어셈블리어, 바이트코드

(용어 정리)
'빌드' 는 소스코드를 실행할 수 있는 소프트웨어 산출물로 만드는행위. 최종적으로 개발자들이 짠 코드가 빌드를 통해 실행할 수 있는 상태가 된다.(우리가 다운받은 프로그램들은 전부 빌드 과정을 거친 결과물--마우스 클릭하면 바로 실행되는 상태) 컨파일도 빌드라는 과정 중 하나이다. (비슷한 개념)
IDE(Integrated Development Environment)는 코딩을 하고 디버깅, 컴파일 등의 전반적인 작업을 제공해주는 프로그램. 예전에는 코딩은 코딩편집기에서, 컴파일은 별도의 공간에서 했다면 지금은 IDE에서 한번에 할 수 있게 되었다.

3. 네트워크
네트워크의 기본
네트워크는 컴퓨터와 컴퓨터간의 연결을 의미한다.
네트워크 연결이 되기 위해선 크게 프로토콜, IP주소, PORT 세가지가 필요하다.
어떤 방식으로(어떤 프로토콜로), 어디 컴퓨터에(IP주소)에, 어떤 프로그램을(PORT)을 연결할 것인지가 중요하다.

컴퓨터에서 연결된 네트워크 장치를 이용하기 위해선 랜카드가 필요.(공유기) 보통 컴퓨터에서는 무선, 유선 기능이 가능하다면 유선,무선 랜카드 모두 필요.

0개의 댓글