관리 메뉴

아보카도 Blog

개발 지식: 운영체제, 하드웨어, 프로그램, 네트워크, GIT 본문

데이터와 소통

개발 지식: 운영체제, 하드웨어, 프로그램, 네트워크, GIT

수수 아보카도 2023. 1. 4. 09:59

건강 문제로 잠시 내배캠을 쉬게 되었다.

집에 너무 가만히 있는 것 같아 개발 지식들을 조금씩 익히려고 한다.

오늘 배운 운영체제, 하드웨어는 이 곳에 적힌 내용들을 익히면서 필사한 것이다.

 

 

1. 운영체제(Operating System)

운영체제는 프로그램들을 실행하는 메인 프로그램이다.

네트워크 통신, 입출력 장치 관리 등 우리가 컴퓨터를 사용하는 데 필요한 모든 것을 관리한다.

 

2. 커널

운영체제 내부에는 여러 개의 구성요소가 자리하는데, 그 중 커널은 프로그램들을 중재하는 역할을 한다.

커널은 또한 하드웨어의 자원을 이용해 프로그램을 관리하기도 한다.

운영체제를 만들 때 커널을 기본으로 해서 그 위에 다른 것들을 올린다.

 

3. 하드웨어

1) CPU: 컴퓨터 시스템을 통제하고 프로그램이 돌아가는 모든 계산을 한다.

 

2) 메모리

메모리는 전기적인 신호를 임시 저장한다.

CPU의 계산 결과를 저장하며, 프로그램이 실행되는 공간을 제공한다.

 

3) 디스크: 정보를 영구 저장한다.

메모리는 프로그램이 실행되는 과정을 책임지고, 디스크는 프로그램을 컴퓨터에 저장하는 과정을 책임진다.

 

4. 프로그램

프로그램이란, 개발자들이 짠 코드의 집합이 컴퓨터가 이해할 수 있는 코드들로 컴파일된 것.

프로세스란, 프로그램을 실행하게 되었을 때를 말한다. 이 때 프로세스가 생성된다고 한다.

Stack과 Heap은 프로그램이 실행되면서 생기는 정보를 저장하는 자료구조이다.

컴파일러: 개발자들이 짠 코드를 컴파일을 통해 실행 가능한 코드로 변환된다.

컴파일러를 통해 고급언어에서 저급언어(기계어)로 변환된다.

빌드: 소스 코드를 실행할 수 있는 소프트웨어 산출물로 만드는 행위. 컴파일은 빌드 과정 중 하나이다.

IDE(Intergrated Development Environment): 코딩, 디버깅, 컴파일 등의 전반적인 작업을 제공해주는 프로그램이다.

 

5. 네트워크

1) 네트워크의 의미

네트워크란, 컴퓨터와 컴퓨터 간의 연결을 말한다.

네트워크 연결이 되기 위해서는 1)프로토콜 2) IP주소, 3)PORT가 필요하다.

네트워크를 통해 정보를 송수신하려면 송수신 수단이 필요하다. 이 수단으로는 랜선, 와이파이 공유기 등이 있다.

랜선은 광케이블을 사용한다. 광케이블은 0과 1이라는 컴퓨터용 전기 신호를 빛이라는 물리적 신호로 변환한다.

와이파이는 전자기파를 이용한다.

컴퓨터에서 연결된 네트워크 장치를 이용하기 위해서는 랜카드가 사용된다.

무선, 유선 랜카드가 모두 필요하다.

 

2) 서버와 클라이언트

네트워크에서 정보를 제공해주는 쪽을 서버, 정보를 받는 쪽을 클라이언트(앱, 웹)라 한다.

 

3) 프로토콜

통신 프로토콜이란, 네트워크 통신이 기본적으로 전세계적으로 가능하게 하는 규칙.

예를 들어 http, https, ssh, smtp.

 

4) IP (Internet Protocol Address)

IP 주소란, 네트워크 통신을 위한 주소이다.

컴퓨터의 고유주소가 아니라, 와이파이, 랜선 연결 등의 네트워크를 기준으로 IP 주소를 부여받는다.

 

5) PORT

포트는 컴퓨터 내에 프로세스로 도달하기 위한 주소이다.

http의 기본 포트는 80, https의 기본 포트는 443이다.

 

보안을 위해서 방화벽을 설정하기도 한다.

IP주소, 포트 번호 등 네트워크 연결에 쓰이는 정보를 바탕으로 네트워크 연결을 제한하는 것을 말한다.

 

6) 도메인 (Domain Name)

도메인이란 사람이 쉽게 인식할 수 있는 네트워크 용 영문 주소이다.

도메인 네임을 이용하면 네임 서버를 거쳐 IP를 반환받는 작업이 필요하다.

웹에서 뿐만 아니라, 클라이언트가 서버(API 서버, 데이터베이스 서버) 등과 통신할 때도

도메인 네임(URL)을 이용해서 정보를 주고받는다.

 

보통 서버의 도메인 네임을 붙이기 위해서는 호스팅 서비스 (가비아, 후이즈)에서 도메인 네임을 구매한다.

그 후 도메인 네임 서버에 이를 적용시켜야 한다.

 

7) 라이브러리, 프레임워크

라이브러리란 프로그램의 특정 기능을 수행하도록 미리 짜여진 코드 뭉치이다.

프레임워크란, 코드의 큰 뼈대(frame)를 제공해주어서 그 뼈대에서 개발을 할 수 있도록 도와준다.

라이브러리와 마찬가지로 개발자가 미리 만들어놓은 코드이다.

예를 들어 웹 개발. 웹 개발 시 React, Angular, Vue 같은 프레임워크를 사용한다.

서버 개발. 서버 개발 시 JS를 사용하면 express 같은 프레임워크를 사용하고,

Python을 사용하면 django, flask 같은 프레임워크를 사용한다.

 

8) API (Application Programming Interface)

API는 프로그램과 프로그램을 연결시켜주는 매개체이다.

API는 프로그램 기능들을 미리 정해서 규칙을 잘 세워둔다면

클라이언트는 프로그램을 모르더라도 API에 따라 손쉽게 통신할 수 있다.

예를 들어 로그인하기, 상품 정보 보기, 결제하기 등.

이때 클라이언트는 데이터베이스가 아닌 API 서버와 통신한다.

 

6. GIT, GITHUB

깃은 소스 코드의 버전을 관리하는 툴이다.

커밋 - 푸시 - 풀의 과정을 거친다.

커밋을 쌓은 후, 다른 개발자는 마지막 커밋을 기준으로 패치하여 그 위에 본인 코드를 친다.

충돌이 일어날 때 해결을 도와준다.

브런치를 통해 작업할 수 있게 한다.

마스터 브랜치를 복사해서 새로운 브랜치를 만든 후, 그 안에서 커밋들을 쌓으며 작업한다.

마지막에 해당 브랜치를 메인 브랜치로 머지시켜서 커밋들을 합친다.

git 브랜치 전략으로 git flow, trunk based등이 있다.

 

Github는 깃이 적용된 원격 코드저장소이다.

깃허브는 코드를 저장해주는 기능뿐만 아니라 개발자끼리 코드에 대해 논의 할 수 있는 issue, pull request를 제공한다.

 

 

'데이터와 소통' 카테고리의 다른 글

데이터 정규화  (0) 2023.01.30
리눅스  (0) 2022.12.24
RESTful API 특강  (0) 2022.12.01
API와 Ajax 기초  (0) 2022.11.17