본문 바로가기

Computer Science

(45)
<운영체제> 프로세스와 스레드 1. 프로세스 - 프로세스는 운영체제에서 메모리 영역을 할당받아 실행되는 독립적인 프로그램 인스턴스이다. - 동적인 개념으로는 실행된 프로그램을 의미한다. - 더 자세한 내용은 지난 글을 참고하자. * 특징 - 한 프로세스는 다른 프로세스에 접근할 수 없다. 만일 접근하려면 통신을 사용해야한다. - 프로세스 하나는 독립된 메모리영역을 받으며 내부에는 Code, Data, Stack Heap영역이 있다. - 프로세스는 최소 1개의 스레드(메인 스레드)를 가지고 있다. * 상태 - 프로세스는 아래와 같은 생명주기를 갖는다. - CPU는 여러 프로세스를 빠르게 번갈아 가며 작업해야하는데 이 때, PCB(Process control block)을 이용하여 위의 상태들을 관리하며 Context Switching을..
< FP > 함수형 프로그래밍이란? 1. 함수형 프로그래밍(FP) * 소개 - 최근 프로그래밍 패러다임은 크게 명령형 프로그래밍과 선언형 프로그래밍으로 나뉜다. - 명령형 프로그래밍 : 어떻게 할 것인지를 설명하는 방식으로 절차지향 프로그래밍과 객체지향 프로그래밍이 있다. - 선언형 프로그래밍 : 무엇을 할 것인지를 설명하는 방식으로 함수를 조합하여 SW를 만드는 함수형 프로그래밍이 있다. - 함수형 프로그래밍은 자료처리를 수학적 함수의 계산으로 표현하려 한다. f(x) 와 같은 것을 생각하면 좋겠다. * 의미 - 함수형 프로그래밍은 거의 모든 것을 순수함수로 나누어 문제를 해결하려한다. 이를 통해 가독성을 높이고, 유지보수를 용이하게 한다. - 함수형 프로그래밍의 가장 큰 특징은 순수함수, 1급함수, 불변성, 참조 투명성이다. 이들은 아..
<메모리> V8 엔진의 메모리 1. 소개 * 소개 - V8 엔진은 웹 브라우저를 만드는 데 기반을 제공하는 오픈 소스 자바스크립트 엔진이다. 자바스크립트는 인터프리터 언어이기 때문에 코드를 해석하고 실행하는 엔진이 필요하다. V8은 자바스크립트를 컴파일하고 실행한다. - 필자는 웹 프론트 분야를 공부하며 자바스크립트를 사용하기 때문에 V8 엔진의 메모리 관리에 대해 공부하며 정리하고자 한다. - V8엔진은 노드JS, Deno, Electron과 같은 런타임 뿐만 아니라 크롬, 크로미움, 오페라, 엣지 등의 브라우저에서도 사용되므로 V8 엔진의 메모리 관리를 공부하는 것은 매우 중요하다. 2. 메모리 구조 * V8 메모리 구조 - 자바스크립트는 단일 스레드이고, V8 역시 자바스크립트 컨텍스트 당 단일 프로세스를 사용한다. - 실행 중..
<운영체제> 프로세스 메모리 1. 프로세스 모델 * 프로세스란 - 프로세스란 운영체제 입장에서 하나의 작업단위이다. - 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램을 의미한다. - 프로그램의 실행은 파일 시스템에 존재하던 실행파일이 메모리에 적재된다는 의미를 가지며, CPU를 할당 받아 명령을 수행하고 있는 상태를 의미한다. - 즉 프로세스는 실행 중인 프로그램을 의미하며, 프로세스의 주소공간을 가상 메모리라고 칭한다. * PCB - 프로세스 제어 블록(Process Control Block)은 프로세스를 실행하는 데 필요한 정보를 보관하는 자료구조이다. - 프로그램이 메모리에 올라와 이 PCB를 얻었을 때 비로소 프로세스가 된다. - 모든 프로세스는 고유의 PCB를 가지며, 프로세스 생성 시 만들어져서 종료시 폐기된다. -..
< OOP > 객체 지향 프로그래밍이란? 1. 객체 지향 프로그래밍이란 * OOP란 - 객체 지향 프로그래밍(Object-Oriented Programming, OOP)은 컴퓨터 프로그래밍의 패러다임 중 하나로, 프로그램을 '객체'의 모임으로 파악하고자 하는 것이다. 객체 지향 프로그래밍은 유연하고 변경이 용이할 뿐만 아니라 유지 보수가 쉽기 때문에 대규모 SW개발에서 자주 사용된다. * 구성 요소 - 클래스(Class) 같은 종류의 집단에 속하는 속성과 행위를 정의한 것이다. 위의 예시에서 스마트폰에 해당한다. 객체지향 프로그램의 기본적인 사용자 정의 데이터형이다. 클래스는 다른 클래스 또는 외부 요소와 독립적으로 디자인하여야 한다. 쉽게 말해 클래스는 비슷한 구조를 계속 만들어 내기위한 일종의 틀이다. 내부에 속성이나 메서드들이 정의되어 있..
<네트워크> 무선 랜 1. 무선 랜의 구조 * 무선 랜이란. - 이전 장까지는 랜 케이블로 연결하여 통신하는 유선 랜의 구조에 대해 공부하였다. - 무선 랜 : 무선 신호 전달 방식을 이용하여 두 대 이상의 장치를 연결하는 기술이다. 정식 명칭은 wireless LAN이지만 Wi-Fi라는 마케팅 네임으로 주로 사용한다. - 장점 : 케이블이 없으므로 걸리적거리지 않고 깔끔하고 편하다. 랜 케이블이 닿지 않는 근처에서도 통신이 가능하다. - 단점 : 유선보다 속도가 불안정하고 전파가 약하면 연결이 잘 안될 수 있다. 유선에 비해 보안에 취약하다. - 무선랜은 다음과 같이 무선 액세스 포인트와 무선 클라이언트로 구성된다. - 컴퓨터가 무선 액세스 포인트와 통신하려면 무선 랜 칩과 무선 랜 어댑터가 필요하다. 최근에 나온 컴퓨터는..
<네트워크> OSI모델의 흐름 1. 랜카드에서의 데이터 전달 및 처리 * 네트워크의 구성 - 이번 포스팅에서는 지금까지의 내용을 총 정리해보자. - 웹 사이트에 접속하였을 때 OSI 모델 상위 응용 계층부터 하위 물리 계층까지의 작업을 정리해보자. - 응용 계층 : (세션 계층과 표현 계층 포함) 애플리케이션 등에서 사용하는 데이터를 송수신하는 데 필요 - 전송 계층 : 목적지에 데이터를 정확하게 전달하는 데 필요 - 네트워크 계층 : 다른 네트워크에 있는 목적지에 데이터를 전달하는데 필요 - 데이터 링크 계층 : 랜에서 데이터를 송수신하는 데 필요 - 물리 계층 : 데이터를 전기 신호로 변환하는 데 필요 - 컴퓨터, 스위치, 라우터, 웹 서버로 구성된 네트워크가 있다고 가정해보자. - 위 그림에서 네트워크는 총 세 개로 구성되어 있..
<네트워크> 응용 계층 1. 응용 계층의 역할 * 응용계층 - 애플리케이션 : 운영 체제에서 실행되는 모든 소프트웨어를 의미한다. 인터넷 익스플로러 같은 웹브라우저부터 Outlook과 같은 메일프로그램 등을 포함한다. - 클라이언트 : 서비스를 요청하는 측을 의미한다. 웹 브라우저나 메일프로그램 등을 의미한다. - 서버 : 서비스를 제공하는 측을 의미한다. 웹 서버 프로그램과 메일 서버 프로그램 등을 의미한다. - 위와 같은 애플리케이션들이 응용 계층에서 동작한다. 참고로 이 장에서의 응용 계층은 세션 계층과 표현 계층을 포함하는 것으로 생각한다. - 응용계층은 사용자 측의 요청을 전달하기 위해 통신 대상이 이해할 수 있는 메시지(데이터)로 변환하고 전송 계층으로 전달한다. - 클라이언트 측 애플리케이션(웹 브라우저, FTP,..
<네트워크> 전송 계층 1. 전송 계층의 역할 * 전송 계층의 두 가지 역할 - 이전 장까지 물리 계층, 데이터 링크 계층, 네트워크 계층을 살펴 보았다. 그러나 이 계층들은 목적지에 데이터를 보내는 중에 데이터가 손상되거나 유실되더라도 아무것도 하지 못한다. - 전송 계층은 목적지에 신뢰할 수 있는 데이터를 전달하기 위해 오류를 점검하고, 애플리케이션을 식별하는 기능을 가지고 있다. - 전송 계층은 오류가 발생하면 점검하여 데이터를 재전송하도록 요청한다. - 컴퓨터가 데이터를 받더라도 어느 애플리케이션에 전달해야할지 알아야 한다. 홈페이지인지 메일프로그램인지 등을 구분하도록 전송된 데이터의 목적지가 어떤 애플리케이션인지 식별한다. * 연결형 통신과 비연결형 통신 - 연결형 통신 : 신뢰할 수 있고 정확한 데이터를 전달하는 통..
<네트워크> 네트워크 계층(2) 1. 네트워크 주소 & 브로드캐스트 주소 * 네트워크 주소와 브로드캐스트 주소란 - IP주소에는 네트워크 주소와 브로드캐스트 주소가 있다. 이들은 특별한 주소로 컴퓨터나 라우터가 자신의 IP로 사용하면 안된다. - C클래스 사설IP 주소의 예는 다음과 같다. - 네트워크 주소 : 전체 네트워크에서 작은 네트워크를 식별하는데 사용된다. 호스트 ID가 10진수로 0이면 그 네트워크 전체를 대표하는 주소이다. - 브로드캐스트 주소 : 네트워크에 있는 컴퓨터나 장비 모두에게 한 번에 데이터를 전송하는 데 사용되는 전용IP 2. 서브넷 * 서브넷 - 서브넷 : 하나의 네트워크가 분할되어 나눠진 작은네트워크를 의미한다. 클래스 단위로만 분류를 한다면 적절한 네트워크의 크기로 구분할 수 없다. 따라서 서브넷으로 분할..