본문 바로가기

코딩 공부/CS13

[CS] 프로세스와 스레드 프로세스(Process) 실행중에 있는 프로그램(Program)으로 메모리에 올라와 실행되고 있는 프로그램의 인스턴스(독립적인 개체) 운영체제로부터 시스템 자원을 할당받는 작업의 단위 즉, 동적인 개념으로는 실행된 프로그램을 의미한다. 특징 프로세스는 각각 독립된 메모리 영역(Code, Data, Stack, Heap의 구조)을 할당받는다. 기본적으로 프로세스당 최소 1개의 스레드(메인 스레드)를 가지고 있다. 각 프로세스는 별도의 주소 공간에서 실행되며, 한 프로세스는 다른 프로세스의 변수나 자료구조에 접근할 수 없다. 한 프로세스가 다른 프로세스의 자원에 접근하려면 프로세스 간의 통신(IPC, inter-process communication)을 사용해야 한다. 스레드(Thread) 프로세스 내에서 .. 2023. 2. 25.
[CS] 프레임워크와 라이브러리 프레임워크(Framework) 프레임워크는 뼈대나 기반구조를 뜻하고, 제어의 역전 개념이 적용된 대표적인 기술입니다. 애플리케이션 개발 시 필수적인 코드, 알고리즘, DB 연동과 같은 기능들을 위해 어느 정도 뼈대(구조)를 제공하며 이러한 뼈대 위에서 사용자는 코드를 작성하여 애플리케이션을 개발합니다. 앱/서버 등의 구동, 메모리 관리, 이벤트 루프 등의 공통된 부분은 프레임워크가 관리하며, 사용자는 프레임워크가 정해준 방식대로 클래서, 메서드들을 구현하면 됩니다. 프레임워크의 특징 특정 개념들의 추상화를 제공하는 여러 클래스나 컴포넌트로 구성되어 있습니다. 추상적인 개념들이 문제를 해결하기 위해 같이 작업하는 방법을 정의합니다. 컴포넌트들은 재사용이 가능합니다. 높은 수준에서 패턴들을 조작화 할 수 있.. 2023. 2. 13.
[CS] 메모리 구조 (Stack, Heap, Data, Code) 메모리 작업을 처리하기 위한 기억 장치로 물리(메인) 메모리(RAM), 가상 메모리(SSD, HDD의 swap 영역)가 존재한다. 가상 메모리 : 필요한 내용만 물리 메모리에 올려 메모리를 관리하는 기법으로 요구 페이징 기법을 사용한다. (가상 메모리에는 방어적 코드와 같이 불필요할 수 있는 코드가 올라감) 요구 페이징 기법 : 유-무효 비트(valid, invalid)로 페이지가 메모리에 존재하는지 확인 후 없으면 보조 저장 장치에서 가져오는 기법 프로그램 실행 순서 프로그램이 실행하게 되면 OS는 메모리(RAM)에 공간을 할당해줍니다. 이때, 할당해주는 메모리 공간은 4가지(Code, Data, Stack, Heap)가 있습니다. 메모리 구조 1. 코드(Code) 영역 메모리의 코드(code) 영역은.. 2023. 2. 2.
[CS] 객체지향설계 5원칙 : SOLID SOLID 원칙 객체지향 설계5대 원칙이라 부르는데 SRP(단일 책임 원칙), OCP(개방-폐쇄 원칙), LSP(리스코프 치환 원칙), ISP(인터페이스 분리 원칙), DIP(의존 역전 원칙)을 말하고 앞자를 따서 SOILD 원칙이라고 부른다. 1. 단일 책임 원칙 (Single Responsiblity Principle) "어떤 클래스를 변경해야 하는 이유는 오직 하나뿐 이어야한다 - 로버트 C 마틴" 클래스는 그 책임을 완전히 캡슐화해야 함을 말한다. 설명 작성된 클래스는 하나의 기능만 가지며 클래스가 제공하는 모든 서비스는 그 하나의 책임을 수행하는데 집중되어야 한다. 작성된 클래스가 여러 기능을 가질 경우 기능에 대한 분기 처리를 해야 하기에 코드의 복잡도만 높아지므로 유지보수 시 좋지 않다 2... 2023. 2. 1.
[CS] REST API (REST, RESTful) REST API를 알기전 REST에 대해서 알아야 하기 때문에 REST부터 알아봅시다. REST(Representational State Transfer) 자원을 이름으로 구분하여 해당 자원의 상태를 주고받는 모든 것을 의미합니다. 즉 HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고, HTTP Method(POST, GET, PUT, DELETE, PATCH 등)를 통해 해당 자원(URI)에 대한 CRUD Operation을 적용하는 것을 의미합니다. CRUD Operation란? CRUD는 대부분의 컴퓨터 소프트웨어가 가지는 기본적인 데이터 처리 기능인 Create(생성), Read(읽기), Update(갱신), Delete(삭제)를 묶어서 .. 2022. 12. 7.
[CS] 아키텍처(Architecture) 아키텍처(Architecture) 구성 요소들간의 관계,환경,설계와 발전을 관리하는 원칙으로 이루어진 시스템의 근본적인 구조, 즉 아키텍처란 서비스의 동작 원리를 나타내는 것입니다. 아키텍처의 특징 시스템 구성 및 동작 원리를 나타냄 시스템 구성요소에 대해 설계 및 구현을 지원하는 수준으로 자세히 기술 구성요소 간의 관계 및 시스템 외부 환경과 관계가 나타남 요구사항 및 시스템 전체 수명 주기를 고려 시스템 전체에 대한 논리적인 기능 체계와 실현을 위한 구성방식, 최적화를 목표 아키텍처의 역할 시스템 구조 파악 다양한 시스템 구성요소의 상호 작용 정의 역할 및 프로토콜, 인터페이스 정의 다른 기종 시스템 간의 상호 운영성 확보 신규나 기존(Legacy)시스템의 응용 및 데이터의 연결성 확보 아키텍처 설계.. 2022. 12. 4.