전체 글 68

프로세스(process)와 세마포어(semaphore) 작성중

프로세스 프로세스(process)는 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램을 말한다. 종종 스케줄링의 대상이 되는 작업(task)이라는 용어와 거의 같은 의미로 쓰인다. 여러 개의 프로세서를 사용하는 것을 멀티프로세싱이라고 하며 같은 시간에 여러 개의 프로그램을 띄우는 시분할 방식을 멀티태스킹이라고 한다. 프로세스 관리는 운영 체제의 중요한 부분이 되었다. 세마포어 세마포어(Semaphore)는 에츠허르 데이크스트라가 고안한, 두 개의 원자적 함수로 조작되는 정수 변수로서, 멀티프로그래밍 환경에서 공유 자원에 대한 접근을 제한하는 방법으로 사용된다. 이는 철학자들의 만찬 문제의 고전적인 해법이지만 모든 교착 상태를 해결하지는 못한다. 이전에 philosophers 과제를 진행하기전에 평가를 ..

스레드(thread)와 뮤텍스(mutex)

서브젝트가 업데이트 되고, 우리는 식사하는 철학자 문제를 스레드(철학자)-뮤텍스(포크), 프로세스(철학자)-세마포어(포크) 로 구성되도록 코드를 짜야한다. 같은 문제를 다른 방법들을 이용하여 코드를 짜기 위해서는 스레드와 프로세스, 뮤텍스와 세마포어의 차이를 이해하는게 좋다. 깔끔하고 정확한 설명들은 인터넷에 찾아보면 잘 정리되어있으니 이번 글에서는 내가 과제를 진행하면서 새로 알게 되었거나, 개념의 느낌(?) 위주대로 써 볼 생각이다. 스레드 스레드(thread)는 어떠한 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름의 단위를 말한다. 일반적으로 한 프로그램은 하나의 스레드를 가지고 있지만, 프로그램 환경에 따라 둘 이상의 스레드를 동시에 실행할 수 있다. 이러한 실행 방식을 멀티스레드(mult..

inception - docker compose

1. docker-compose 란? [도커] Docker Compose란? 복수 개의 컨테이너를 실행시키는 도커 어플리케이션을 정의하기 위한 툴입니다. Compose 를 사용하면 YAML 파일을 사용하여 애플리케이션의 서비스를 구성할 수 있습니다. 그런 다음 single command를 사용하여 구성에서 모든 서비스를 만들고 시작합니다. 기본적으로 3스텝의 프로세스를 사용합니다. 앱의 환경을 정의하여 어디에서나 재사용할 수 있는 Dockerfile을 정의합니다. docker-compose.yml 에서 앱을 구성할 수 있는 서비스를 정의합니다. 그래서 단 하나의 환경ㅇ서 실행할 수 있게 합니다. docker-compose up 명령어를 실행합니다. 그리고 Compose를 시작시키고 전체의 앱을 실행시킵니..

42seoul/inception 2021.06.06

inception subject

이 프로젝트는 Docker를 사용하여 가상머신 관리에 대한 지식을 넓히는 것을 목표로 합니다. 여러 Docker 이미지를 가상화하여 새 개인 가상 머신에 생성합니다. 프로젝트 구성에 필요한 모든 파일은 srcs 폴더에 저장해야 합니다. Makefile도 필요하며 디렉토리의 루트에 있어야 합니다. 전체 응용 프로그램을 설정해야 합니다(즉, 다음을 사용하여 Docker 이미지를 빌드해야 함). 이 과목에서는 배경에 따라 아직 배우지 못한 개념을 연습해야 합니다. 따라서 이 과제를 완료하기 위해 도커 사용법과 관련된 많은 문서를 읽는 것을 주저하지 마십시오. 기본 파트 이 프로젝트는 특정 규칙에 따라 서로 다른 서비스로 구성된 소규모 인프라를 설정하는 것으로 구성됩니다. 전체 프로젝트는 가상 머신에서 수행해야..

42seoul/inception 2021.06.06

philosopher subject

Mandatory 3개의 다른 프로그램을 작성해야 하지만 기본 규칙은 동일합니다. 본 프로젝트는 본 표준에 따라 C로 코딩되어야 한다. Norm. Any leak, crash, undefined behavior or norm error 는 프로젝트에 0점을 의미합니다. 많은 철학자들이 원탁에 앉아 식사, 생각 또는 잠의 세 가지 중 하나를 하고 있다. 먹는 동안, 그들은 생각하거나 잠을 자지 않고, 자는 동안, 먹거나 생각하지 않으며, 물론 생각하는 동안, 먹거나 자는 것이 아니다. 철학자들은 큰 스파게티 그릇이 중앙에 있는 원형 테이블에 앉는다. 테이블 위에 포크가 몇 개 있습니다. 스파게티는 하나의 포크로 제공 및 먹기가 어렵기 때문에 철학자는 두 개의 포크로, 한 손에 하나씩 먹어야 한다고 가정한다..

push_swap subject

Game rules 이 게임은 a 와 b라는 이름의 2개의 스택으로 구성되어 있습니다 시작하기에 앞서: a 는 중복되는 수 없이 양 혹은 음 의 임의의 수를 가지고 있습니다 b 는 비어있습니다 목표는 오름차순으로 숫자를 스택으로 정렬하는 것입니다. 이를 수행하기 위해 다음과 같은 작업을 할 수 있습니다: sa : swap a - 스택a 의 맨 위에 있는 두 요소를 바꿉니다. a의 수가 하나이거나 없는 경우 아무일도 일어나지 않습니다 sb : swap b - 스택b 의 맨 위에 있는 두 요소를 바꿉니다. b의 수가 하나이거나 없는 경우 아무일도 일어나지 않습니다 ss : sa 와 sb 가 동시에 일어납니다 pa : push a - b의 맨 위에 있는 요소를 a 맨 위에 넣습니다. b가 비어있는 경우 아무일..

42seoul/push_swap 2021.05.16

make file

쉘스크립트 작성 -> 일반적으로 스크립트 첫번째 줄에 "#bin/sh"를 넣어준다. 이는 bash shell이라는 것을 명시적으로 알려주는 것이며, 생략 가능합니다. - 생략 가능하나 그럴 경우 시스템의 default shell이 사용됨. - Shell 종류에 따라 command 및 사용법이 조금씩 다르므로, 명시적으로 선언하지 않을 경우 runtime 오류가 발생 가능합니다. 주석 -> “#”으로 시작하는 Line은 주석으로 인식합니다. 사용자 변수 기본적으로 “변수명=값” 와 같은 형태로 작성한다. 변수명에 값을 할당할 때 공백을 넣지 않는다. 대소문자 구분 변수명에 ? * 문자는 사용 금지 명시적 변수 선언 declear 또는 typeset 명령 사용 (bash에서만 사용 가능) 옵션 ‘-i’ : ..

C 2020.06.14