728x90
반응형

분류 전체보기 62

UNIX - [Semaphore]

semaphore 세마포는 양의 정수로 선언할 수 있다. 세마포의 2가지 기능 semWait(); → 세마포-1을 하고 세마포 ≥ 0 이라면 지나가고 아니라면 세마포 ≥ 0 이 될 때까지 Block한다. semSig(); → 세마포+1을 한다. p(sem); // semWait something interesting; // 크리티컬섹션 v(sem); // semSig semget 시스템 호출 사용법 #include #include #include int semget(key_t key, int nsems, int permflags); /* > key : semaphore 집합 이름 > nsems : semaphore 집합 내의 semaphore 수 > permflags : 0600, IPC_CREAT, I..

[백준][9252번][C/C++] LCS2

https://www.acmicpc.net/problem/9252 9252번: LCS 2 LCS(Longest Common Subsequence, 최장 공통 부분 수열)문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제이다. 예를 들어, ACAYKP와 CAPCAK의 LCS는 ACAK가 된다. www.acmicpc.net 오랜만에 눈물의 AC를 받은 문제이다. LCS의 길이를 구하는 것 까지는 설명을 듣고 이해할 수 있었다. 하지만 실제 LCS를 구하는 방법에서 막혀서 시간이 걸렸다. 다음과 같은 순서로 LCS를 구하는 문제에 접근했다. 1. string2차원 배열을 만들고, DP 배열을 채울 때 string 배열도 DP가 채워짐에 따라서 똑같이 채우는 방법. 하지만..

UNIX - [시스템 V의 프로세스간 통신 - Message queue]

시스템 V의 프로세스간 통신 유닉스는 처음 개발된 이래 다양한 형태로 발전했다. 크게 BSD 계열과 시스템 V 계열로 구분할 수 있다. 시스템V계열 유닉스에서 개발해 제공하는 프로세스간 통신 방법이 메세지 큐, 공유 메모리, 세마포어 이다. 이 세가지를 묶어서 시스템V IPC 라고 한다. 이것은 SVR2에서 처음 개발되었고, SVR4에서도 제공하고 있으며 현재는 대부분의 유닉스 시스템에서 제공하고 있다. IPC 설비 IPC(Inter-Process Communication)란 프로세스 간 통신을 의미한다. UNIX의 대표적인 IPC는 message_queue, semaphore, shared memory segment가 있다. key • key는 message_queue, semaphore, shared..

UNIX - [PIPE - 2]

FIFO pipe는 동일 ancestor를 갖는 프로세스들만 연결 가능. fifo는 모든 프로세스들을 연결 가능. UNIX의 file 이름을 부여 받는다. 소유자, 크기, 연관된 접근 허가를 가진다. 일반 file처럼, open, close, read, write, remove가 가능하다. fifo는 pipe와 다르게 UNIX의 파일 이름을 부여 받는다. 따라서 파일처럼 여러 권한 설정과 파일 크기를 가지고, open, close, read, write, remove 등의 시스템 콜을 사용 가능하다. 사용법 fifo 만들기 #include #include int mkfifo(const char *pathname, mode_t mode); // mode는 보통 0666으로 그냥 줌 → fifo open (..

UNIX - [PIPE]

유닉스의 프로세스 간 통신 방법 즉 IPC 통신에는 PIPE가 있다. PIPE란 이름처럼 두 프로세스 간에 데이터가 오고 가는 관. 즉 영어로 파이프를 생성해서 두 프로세스가 데이터를 주고받는 방법이다. 이 파이프는 fifo의 성질을 띄고있으며 단방향 통신이라는 특징이 있다. 파이프는 read와 write 시스템 콜을 이용해서 데이터를 주고받으며, 기본적으로 blocking read/ blocking write를 사용한다. 파이프를 이용해서 프로세스간 동기화 작업을 수행할 수 있으며, 프로세스 간 서버와 클라이언트의 동작을 구현할 수 있다. pipe 만들기 #include int pipe(int filedes[2]); → filedes[0] : 읽기용 → filedes[1] : 쓰기용 → 성공시 0, 실..

UNIX - [MEMORY MAPPING]

메모리 매핑이란 메모리의 특정 부분을 프로세스에 매핑하는 것을 의미한다. 이는 mmap() 함수를 통해 수행할 수 있으며, 같은 메모리 공간을 여러 프로세스가 동시에 매핑할 수 있다. 하지만 매핑한 주소의 값을 직접 변경 하는 것이 아니라, 매핑된 주소 위치의 레퍼런스를 수정하면 매핑된 주소의 값이 바뀌는 식으로 한 번 거쳐서 변경된다. 다음은 메뉴얼 페이지의 글이다. mmap()은 호출 프로세스의 가상 주소 공간에 새 매핑을 만듭니다. 새 매핑의 시작 주소는 addr에 지정됩니다. length 인수는 매핑의 길이(0보다 커야 함)를 지정합니다. Signal은 동기화의 수단으로는 사용가능하다. but 데이터를 주고받는 수단으로는 사용 불가능하다. 메모리 매핑을 이용해서 데이터를 건들면 파일의 내용 자체가..

UNIX - [SIGNAL]

signal이란? → 소프트웨어 인터럽트 (하드웨어가 아니라 소프트웨어적으로 interrupt를 발생시키는 방법) 인터럽트(interrupt)를 발생시키는 기능을 하는 시그널은 시스템에서 아주 중요하게 사용된다. 예를 들면 터미널에서는 흔히 Control + C 을 사용해서 실행 중인 프로세스를 종료시킨다. 이는 SIGINT(interrupt signal)라는 미리 정의된 시그널을 프로세스에게 보내서 강제 종료 시키는 방법이다. 우리는 이렇게 알게 모르게 시그널을 사용 중이다. 인터럽트(Interrupt)란? 인터럽트란 CPU가 하던 일을 멈추게하고(혹은 아무 것도 안하고 있는 상태를 멈추고) 끼어드는 것으로 CPU에 할당된 작업을 변경하는데 사용할 수 있다. 일반적으로 CPU는 Fetch stage -..

[백준][1965번][C/C++] 상자넣기

https://www.acmicpc.net/problem/1965 1965번: 상자넣기 정육면체 모양의 상자가 일렬로 늘어서 있다. 상자마다 크기가 주어져 있는데, 앞에 있는 상자의 크기가 뒤에 있는 상자의 크기보다 작으면, 앞에 있는 상자를 뒤에 있는 상자 안에 넣을 수가 www.acmicpc.net 문제를 핵심만 남겨서 해석해보자면 다음과 같다. "정렬되지 않은 정수 배열이 주어질 때 연속적으로 증가하는 가장 큰 정수 배열의 길이를 구하여라" 이는 흔히 LIS (Longest Increasing Subsequence), 즉 최장 증가 부분 수열이라 불리는 문제이다. 다음과 같은 논리로 위와 같은 문제를 DP로 풀 수 있다. 먼저, DP 배열은 다음과 같이 선언한다. DP[지금 탐색 중인 상자의 번호]..

UNIX - [소켓 프로그래밍 예제 - 2]

👉 이 절에서는 소켓을 이용한 간단한 예제 프로그램을 작성해본다. 소켓에는 같은 시스템에 있는 프로세스끼리 데이터를 주고받을 때 사용하는 유닉스 도메인 소켓과 다른 시스템의 프로세스와 통신을 하는 인터넷 소켓이 있다. 이 절에서는 예제를 통해 각각의 사용 방법을 알아보자. 유닉스 도메인 소켓 예제 유닉스 도메인 소켓(unix domain socket)은 같은 시스템에서 통신이 일어나므로 TCP/IP 프로토콜을 직접 이용할 필요가 없다. 따라서 유닉스 도메인 소켓에서 사용하는 소켓 주소 구조체의 항목도 IP 주소가 아닌 경로명을 지정하도록 되어 있다. 이는 파이프나 시스템 V IPC에서 특수 파일을 통신에 사용하는 것과 같다고 생각하면 된다. 소켓 주소 구조체의 항목이 다른 것을 제외하면 유닉스 도메인 소..

UNIX - [소켓 프로그래밍 기초 - 1]

TCP/IP 프로토콜을 이용한 소켓 프로그래밍 👉 학습목표 TCP/IP 프로토콜의 기본 개념을 이해한다. IP 주소와 포트 번호의 개념을 이해한다. 소켓 관련 구조체와 함수를 이해한다. 소켓을 이용한 통신 프로그램을 작성할 수 있다. TCP/IP 프로토콜 TCP/IP 프로토콜은 계층 구조를 구성하는 다양한 프로토콜 중에서 전송 계층의 대표적인 프로토콜인 “TCP 프로토콜”과 네트워크 계층의 대표적인 프로토콜인 “IP 프로토콜”을 묶어서 부르는 말이다. 👉 프로토콜(Protocol) 통신 프로토콜 또는 통신 규약은 컴퓨터나 원거리 통신 장비 사이에서 메시지를 주고 받는 양식과 규칙의 체계이다. 통신 프로토콜은 신호 체계, 인증, 그리고 오류 감지 및 수정 기능을 포함할 수 있다. TCP/IP 프로토콜은 계..

728x90
반응형