본문 바로가기

전체 글221

[운영체제] ep5) Concurrency: Deadlock and Starvation ㅁDeadlock의 발생 조건 4가지① Mutual Exclusion(상호배제)② Hold-and-Wait③ No preemption(비선점)④ Circular Wait: 여러 프로세스가 자원을 할당받은 후, 다른 프로세스가 점유하고 있는 자원을 추가로 요청하면서 서로 대기하는 상황이 순환 형태로 이루어지는 것  ㅇ자원 할당 그래프(Resource Allocation Graphs)       ㅁ데드락 해결방법 3가지1. Deadlock Prevention: 자원할당 규칙을 만든다(사전에 차단)④ Circular Wait를 깨기 위해 자원에 번호를 매긴다 - 자원을 요청할 때 번호 순서대로 요청 - 낭비 多, 실제로 사용은 x데드락이 발생하면 큰일이 나는 시스템이 아닌 이상 데드락 prevention보다는.. 2024. 6. 30.
[데이터베이스] ep4-2) SQL: DML ㅁDML(Data Manipulation Language): 데이터 조작어  ① SELECT / FROM문: 테이블 내 데이터를 검색SELECT [ALL | DISTINCT] 속성_리스트FROM 테이블_리스트; -- 테이블 이름만약 테이블에서 검색하고 싶은 속성 및 테이블이 다수일 경우 콤마로 구분하여 나열 ALL: 결과 테이블에 데이터의 중복을 허용DISTINCT: 결과 테이블에 데이터의 중복을 허용하지 않음  SELECT / FROM문 예제  DISTINCT 예제  ㅇWHERE 조건: SELECT문에 조건을 추가SELECT [ALL | DISTINCT] 속성_리스트FROM 테이블_리스트[WHERE 조건]; 비교 연산자와 논리 연산자를 이용한 검색 조건 제시 (비교 연산자를 이용하여 숫자, 문자, 날짜.. 2024. 6. 29.
[운영체제] ep4-3) Concurrency: Mutual Exclusion and Synchronization Concurrency 방안 3가지1. Software Approaches - 알고리즘을 잘 설계2. HW instruction을 이용3. OS가 제공하는 동기화 툴 이용 (e.g. 세마포, 모니터)1번과 2번에 이어 3번에 대해 알아보자 3. OS가 제공하는 동기화 툴 이용2가지에 대해서 다룰 거다ㅇ세마포(Semaphore): 정수 변수 + (blocked)큐가 결합된 구조체 변수오로지 3개의 동작만 수행한다 ① Initialize: 세마포를 0이나 양수값으로 초기화(음수값으로 초기화 하는 건 의미가 없다) ② semWait: 세마포값 -1, "blocked 큐에서 wait!"if (세마포값 >=0) 통과else if(세마포값  ③ semSignal: 세마포값 +1, "blocked 큐에서 ready 큐.. 2024. 6. 29.
[운영체제] ep4-2) Concurrency: Mutual Exclusion and Synchronization Concurrency 방안 3가지1. Software Approaches - 알고리즘을 잘 설계2. HW instruction을 이용3. OS가 제공하는 동기화 툴 이용 (e.g. 세마포, 모니터)저번 1번에 이어 2번에 대해서 알아보자 2. HW instruction을 이용 - 수정이 불가능하며 중간에 인터럽트로 중단되지도 않는다 HW적으로 움직인다2가지 HW instruction이 있다① Compare & Swap Instruction: 비교하고 같으면 swap// word: 어떠한 저장공간의 주소// 같다면 word를 newval로 swap한다// compare_and_swap 실행 전 word에 저장되어 있던 값을 returnint compare_and_swap(int* word, int test.. 2024. 6. 29.
[운영체제] ep4-1) Concurrency: Mutual Exclusion and Synchronization ㅁ동시성(Concurrency): 여러 작업이 짧은 시간 간격으로 번갈아 가며 수행됨으로써 동시에 처리되는 것처럼 보이게 만드는 것현대 OS는 멀티 프로그래밍, 멀티 프로세싱 등의 기법으로 동시성을 사용하는 데에 있어 발생하는 문제들을 해결해야만 한다 상황) 은행 계좌 파일에 있는 데이터 x를 저장, 처음 잔고는 0원이다 ㅇRace Condition: 결국에는 둘 중에서 마지막으로 작업한 결과만이 남는다Race Condition의 발생을 막기 위해 critical section의 mutually exclusive한 실행이 필요하다 ㅇcritical section(임계구역): Race Condition이 발생할 수 있는 코드 (전혀 예측할 수 없음)critical section은 동시에 실행시키면 안된다.. 2024. 6. 29.
백엔드 개발자 추천 IT 연합 동아리 리스트 9가지 아래 5가지 조건을 만족하는 곳들로만 추렸습니다수정 및 의견사항은 언제든 환영입니다! 제 글이 정확하지 않을 수 있으니 참고만 해주시면 감사하겠습니다 :) [5가지 조건]1. 대학생뿐만 아니라 직장인도 함께 있는 곳2. 선착순이 아닌 면접 시스템이 철저하게 갖춰져 있는 곳 (= 경쟁률이 높은 곳)3. Spring을 사용하는 곳4. 프로젝트에 디자이너가 껴있는 곳5. 수준 높은 프로젝트를 만드는 곳  ㅇ매쉬업(Mash Up)https://mash-up.kr/ Mash-up | IT 연합 동아리매쉬업은 개발, 디자인에 관심과 열정이 있는 사람들이 모인 단체로 Product Design, Android, iOS, Node, Spring, Web 총 6개의 팀으로 구성되어 있습니다. 매쉬업에서는 전체모임의 세미.. 2024. 6. 27.
[자료구조] 후기 코딩은 자고로 독학이라 생각한다 스스로 찾아보고 배우면서 시행착오를 겪어야지만 진정한 실력이 는다고 생각한다 이런 마인드를 가진 나였지만.. 자료구조 수업은 정말 힘들었다 비유를 하자면 알파벳을 알려주고서 바로 영작을 하라는 수준이었다c언어로 연결리스트를 처음 구현할 때의 그 막막함이란.. 진짜 심장이 턱! 하고 막히는 기분이었다 평소에 머리가 나쁘단 소리를 들어본 적이 없고, 수학 잘한다는 소리를 듣던 내가 그 순간만큼은 정말 심각한 바보가 된 것 같았다 손을 쓸 도리가 없었다 그러한 허탈감과 죄책감은 나의 오기를 발동하여 내 안에 있던 독기를 깨우는 듯했다 아마 연결리스트 문제를 세종대 OJ에 170번 넘게 submit 한 사람은 내가 유일하지 않을까..라는 생각이 든다 하지만 부끄러움은 단 1도 없.. 2024. 6. 25.
MariaDB 설치 + 사용 방법 MariaDB는 MySQL에서 포크된 데이터베이스 관리 시스템(DBMS)이기 때문에 MySQL을 대체해서 많이 사용하곤 한다 (문법과 기능이 매우 유사) 주의! 도커가 설치되어 있어야 한다터미널에 명령어 입력# 1. MariaDB 이미지 다운로드docker pull mariadb# 2. MariaDB 컨테이너 실행# MariaDB의 기본 포트 번호는 3306 (MySQL도 동일)# 컨테이너 이름을 mariadb로 지정하고, 기본 포트 3306을 호스트의 포트 3306과 맵핑. 또한, MariaDB의 루트 비밀번호를 root로 설정docker run --name mariadb -d -p 3306:3306 --restart=always -e MYSQL_ROOT_PASSWORD=root mariadb# 3. .. 2024. 6. 25.
도커(docker)란? 도커(docker): LXC(리눅스 컨테이너스)라는 커널 컨테이너 기술을 이용하여 만든 컨테이너 기술 중 하나Go언어로 개발된 오픈소스 프로젝트이며(아파치 라이선스 2.0) 사실상 업계 표준이 되어가고 있는 중이다 Docker는 애플리케이션을 신속하게 구축, 테스트 및 배포할 수 있게 해 준다. Docker는 소프트웨어를 컨테이너라는 표준화된 유닛으로 패키징하며, 이 컨테이너에는 라이브러리, 시스템 도구, 코드, 런타임 등 소프트웨어를 실행하는 데 필요한 모든 것이 포함되어 있다. Docker를 사용하면 환경에 구애받지 않고 애플리케이션을 신속하게 배포 및 확장할 수 있으며 컨테이너를 매우 가벼운 모듈식 가상 머신처럼 다룰 수 있게 된다.       출처 및 참고: 도커 공식 홈페이지 https://ww.. 2024. 6. 25.