728x90

OS 94

IPC(Inter Process Communication)

IPC(Inter Process Communication)프로세스는 독립적으로 실행된다. 독립 되어있다는 것은 다른 프로세스에게 영향을 받지 않는다고 말할 수 있다.(스레드는 프로세스 안에서 자원을 공유하므로 영향을 받는다.)이런 독립적 구조를 가진 프로세스 간의 통신을 해야 하는 상황이 있을 것이다. 이를 가능하도록 해주는 것이 바로 IPC 통신이다.프로세스는 커널이 제공하는 IPC 설비를 이용해 프로세스간 통신을 할 수 있다.IPC 종류익명 PIPE파이프는 두 개의 프로세스를 연결하는데 하나의 프로세스는 데이터를 쓰기만 하고, 다른 하나는 데이터를 읽기만 할 수 있다.한쪽 방향으로만 통신이 가능한 반이중 통신이라고도 부른다.따라서 양쪽으로 모두 송/수신을 하고 싶으면 2개의 파이프를 만들어야 한다.매..

Computer/CS 2024.07.03

프로세스 & 스레드

프로세스 & 스레드프로세스 : 프로그램을 메모리 상에서 실행중인 작업스레드 : 프로세스 안에서 실행되는 여러 흐름의 단위기본적으로 프로세스마다 최소 1개의 스레드를 소유하고 있다.(메인 스레드 포함)주소 공간프로세스는 각각 별도의 주소공간을 할당한다.(독립적)Code : 코드 자체를 구성하는 메모리 영역(프로그램 명령)Data : 전역변수, 정적변수, 배열 등초기화 된 데이터는 data 영역에 저장된다.초기화 되지 않은 데이터는 bss 영역에 저장된다.Heap : 동적 할당 시 사용한다.(new(), malloc() 등)Stack : 지역변수, 매개변수, 리턴 값(임시 메모리 영역)스레드는 Stack만 따로 할당 받고 나머지 영역은 서로 공유한다.하나의 프로세스가 생성될 떄, 기본적으로 하나의 스레드가 ..

Computer/CS 2024.06.28

운영체제(OS, Operationg System)

운영체제(OS, Operationg System)하드웨어를 관리하고, 컴퓨터 시스템의 자원들을 효율적으로 관리하며, 응용 프로그램과 하드웨어 간의 인터페이스로써 다른 응용 프로그램이 유용한 작업을 할 수 있도록 환경을 제공해준다.사용자가 컴퓨터를 편리하고 효과적으로 사용할 수 있도록 환경을 제공하는 시스템 소프트웨어라고 할 수 있다.운영체제의 역할프로세스 관리프로세스, 스레드스케줄링동기화IPC 통신저장장치 관리메모리 관리가상 메모리파일 시스템네트워킹TCP/IP기타 프로토콜사용자 관리계정 관리접근권한 관리디바이스 드라이버순차접근 장치임의접근 장치네트워크 장치1. 프로세스 관리운영체제에서 작동하는 응용 프로그램을 관리하는 기능이다.현재 CPU를 점유해야 할 프로세스를 결정하고, 실제로 CPU를 프로세스에 할..

Computer/CS 2024.06.28

24.06.28 CS

CS운영체제(OS, Operationg System)하드웨어를 관리하고, 컴퓨터 시스템의 자원들을 효율적으로 관리하며, 응용 프로그램과 하드웨어 간의 인터페이스로써 다른 응용 프로그램이 유용한 작업을 할 수 있도록 환경을 제공해준다.사용자가 컴퓨터를 편리하고 효과적으로 사용할 수 있도록 환경을 제공하는 시스템 소프트웨어라고 할 수 있다.운영체제의 역할프로세스 관리프로세스, 스레드스케줄링동기화IPC 통신저장장치 관리메모리 관리가상 메모리파일 시스템네트워킹TCP/IP기타 프로토콜사용자 관리계정 관리접근권한 관리디바이스 드라이버순차접근 장치임의접근 장치네트워크 장치1. 프로세스 관리운영체제에서 작동하는 응용 프로그램을 관리하는 기능이다.현재 CPU를 점유해야 할 프로세스를 결정하고, 실제로 CPU를 프로세스에..

컴퓨터의 구성

컴퓨터의 구성컴퓨터 시스템은 크게 하드웨어와 소프트웨어로 나누어진다.하드웨어 : 컴퓨터를 구성하는 기계적 장치소프트웨어 : 하드웨어의 동작을 지시하고 제어하는 명령어 집합하드웨어중앙처리장치(CPU)주기억장치에서 프로그램 명령어와 데이터를 읽어와 처리하고 명ㅇ령어의 수행순서를 제어한다.중앙처리장치는 비교와 연산을 담당하는 산술논리 연산장치(ALU)와 명령어의 해석과 실행을 담당하는 제어장치, 속도가 빠른 데이터 기억장소인 레지스터로 구성 되어 있다.기억장치 : RAM, HDD프로그램, 데이터, 연산의 중간 결과를 저장하는 장치주 기억장치와 보조 기억장치로 나누어지며, RAM과 ROM도 이곳에 해당한다. 실행중인 프로그램과 같은 프로그램에 필요한 데이터를 일시적으로 저장한다.보조기억장치는 하드디스크 등을 말..

Computer/CS 2024.06.25

24.06.18 면접

면접인생 첫 면접을 봤다.엄청 긴장했고, 같이 들어오신 인사담당자분께서도 여러번 너무 긴장하지 않아도 된다고 하신만큼 티가 났던 것같다.준비를 한다고 했지만 그래도 부족한게 많았고, 부족한건 확실하게 면접에서 문제가 됐다.그래도 그런 문제점을 그냥 있구나 하고 넘어가는게 아니라 적어 놓고 다시 보고 하면 도움이 될 것이라고 생각해서 이렇게 적어본다.Set정의set은 균형 이진 트리(일반적으로 레드-블랙 트리)로 구현된 정렬된 집합이다.특징정렬된 순서 : 원소들이 자동으로 정렬된 상태로 저장된다.탐색 시간 : 삽입, 삭제 검색 연산의 평균 시간 복잡도는 O(log n)이다.순회 : 원소들을 순회할 때 항상 정렬된 순서로 순회한다.사용 예데이터가 항상 정렬된 상태로 필요할 때특정 범위의 원소들을 빠르게 찾을..

24.06.17 서버

서버스레드 풀(Thread Pool)여러 스레드를 미리 생성해 두고, 작업이 들어올 때마다 그 중 하나를 할당하여 작업을 처리하는 방식이다.스레드 생성 및 소멸의 오버헤드를 줄이고, 시스템 리소스를 보다 효율적으로 사용할 수 있다.스레드 풀은 병렬 처리와 동시성을 향상시키는 데 중요한 역할을 한다.주요 개념스레드 풀의 구조스레드 풀 관리자스레드 풀을 관리하는 컴포넌트로, 스레드의 생성, 소멸, 할당을 책임진다.작업 큐처리할 작업들이 대기하는 큐이다.작업이 도착하면 이 큐에 추가되고, 풀에 있는 스레드가 이를 가져와 처리한다.워커 스레드(Worker Threads)실제 작업을 수행하는 스레드들이다.일정 수의 스레드가 미리 생성되어 풀에 대기한다.작동 원리초기화프로그램 시작 시 일정 수의 스레드를 미리 생성..

24.06.16 CS

CS메모리 풀(Memory pool)메모리 풀은 고정된 크기의 블록을 할당하여 malloc이나 new 연산자와 유사한 메모리 동적 할당을 가능하게 해준다. malloc이나 new 연산자 같은 기능들은 다양한 블록사이즈 때문에 단편화를 유발시키고, 파편화된 메모리들은 퍼포먼스 때문에 실시간 시스템에서 사용할 수 없게 된다.좀 더 효율적인 방법은 memory pool이라고 불리는 동일한 사이즈의 메모리 블록들을 미리 할당 해 놓는 것이다. 그러면 응용 프로그램들은 실행 시간에 핸들에 의해서 표현되는 블록들을 할당하고, 접근하고, 해제할 수 있다.프로그래머가 할 수 있는 외부, 내부 단편화의 해결법이다. 프로그래머가 직접 메모리를 관리할 수 있는 특정 크기의 풀(pool)을 만들어서 그 풀에서 메모리를 가져오..

24.06.15 CS

CS프로세스와 스레드프로세스프로세스는 ‘실행중인 프로그램’으로 정의한다. 즉 실행되고 있는 각각의 프로그램이 (심지어 같은 프로그램을 여러 개 실행시켰더라도) 모두 프로세스이다.프로세스는 각자 고유한 가상 메모리를 가지고 있기 때문에, 실제 물리 메모리 사용량과는 상관없이 프로세스 자신이 전체 메모리를 전부 가진 것처럼 작동하며, 이러한 착각을 지원하기 위해 가상 메모리 할당과 페이징 같은 기능들을 제공한다.다른 프로세스와 통신하려면(IPC : Interprocess Communication) 메시지 패싱이나 공유 메모리(Shared Memory) 같은 방식을 사용해야 하며, 스레드보다 비교적 무겁다. 프로세스를 생성 → 제거하는 일련의 사이클에서 OS는 가상 메모리 범위를 잡고, 프로세스를 세팅하고, ..

24.06.14 C++

C++STL 컨테이너벡터(Vector)동적 배열(크기 조절 가능), 배열과 같이 연속된 자료구조이므로 캐시 친화적이다. 임의 접근 반복자(random access iterator)를 사용하므로 배열의 원소에 즉시 접근 가능하다.emplace를 하면 복제 과정 없이 바로 원소를 삽입할 수 있어서 push_back보다 비용이 절감된다. 반복자 무효화가 발생할 수 있다.반복자 무효화컨테이너의 메모리가 재할당 될 때(vector resize, push_back)나 요소 삭제를 하는 등의 동작에서 발생할 수 있다.만약 STL의 erase를 사용한다면 erase한 원소 포함해서 뒤의 원소를 가리키는 모든 반복자가 무효화된다. 이는 삭제 후 뒤에 있는 요소를 모두 땡겨줘야 하기 때문이다.단, erase 함수는 다음 ..

728x90