inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

인프런 워밍업 클럽 CS 3기 2주차 발자국

이지민
0

강의 내용 요약

운영체제

프로세스간 통신

  1. 프로세스는 독립적으로 실행되는 경우도 있지만 다른 프로세스와 데이터를 주고 받으며 통신을 하는 경우도 있음

  2. 프로세스는 한 컴퓨터 내에서 실행 중인 다른 프로세스와 통신하거나 네트워크로 연결된 다른 컴퓨터에 있는 프로세스와 통신할 수도 있음.

     

프로세스 간 통신의 종류

  1. 한 컴퓨터 내에서 프로세스 간 통신

     

    • 파일 : 파일을 이용해 데이터를 주고 받으며 통신

    • 파이프 : 운영체제가 제공한 파이프를 통해 데이터를 주고 받으며 통신

       

      2. 하나의 프로세스 내에서 쓰레드를 이용한 통신

      • 쓰레드코드, 데이터, 힙영역을 공유하고 스택만 각자의 것을 가지고 있음

      • 데이터 영역의 전역 변수 or 힙을 이용하면 쓰레드 간 통신이 가능

      3. 원격의 컴퓨터의 프로세스 간 통신(네트워크 이용)

      • 운영체제가 제공하는 소켓통신

      4. 다른 컴퓨터에 있는 함수를 호출하는 RPC(Remote Procedure call : 원격 프로시저 호출)

 

 

공유자원과 임계구역

1. 공유자원과 동기화 문제

 

2. 동기화 문제의 예시

// 물약을 먹는 코드
int currentHealth = getHealth();
health = currentHealth + 50; // 체력 50 회복
// 공격받는 코드
int currentHealth = getHealth();
health = currentHealth - 10; // 체력 10 감소

 

3. 임계구역(Critical Section)과 경쟁 조건(Race Conditon)

 

4. 상호 배제(Mutual Exclusion) 매커니즘

 

 

세마포어(Semaphore)

1. 세마포어의 개념

 

 

2. 세마포어를 코드에 적용하기

// 세마포어 선언
int semaphore = 1;
// 물약을 먹는 코드
wait(semaphore); //열쇠를 요청해서 열쇠를 받고 문을 잠금

int currentHealth = getHealth();
health = currentHealth + 50; // 체력 50 증가

signal(semaphore); // 방에서 나와 열쇠 관리자에게 열쇠 반납
// 공격받는 코드
wait(sempahore); //열쇠를 요청해서 열쇠를 받고 문을 잠금

int currentHealth = getHealth();
health = currentHealth - 10; // 체력 10 감소

signal(semaphore); // 방에서 나와 열쇠 관리자에게 열쇠 반납

 

3. 세마포어의 단점

wait(s);
// 임계 구역
wait(s);
wait(s);
// 임계 구역
signal(s);
signal(s);
// 임계 구역
wait(s);

 

4. 모니터

public class Health{
	private int health = 100;
	
	synchronized void increase(int amount){
		health += amount
	}
	
	synchronized void decrease(int amount){
		health -= amount
	}
}

// synchornized 키워드가 붙은 함수들은 동시에 여러 프로세스/쓰레드에서 실행 불가능
// ex)(동일한 객체에 속한) increase 함수가 프로세스/쓰레드 A에서 실행 중이면
// 프로세스/쓰레드 B에서는 increase, decrease 모두 실행 불가능

 

 

데드락(Deadlock)

1. 교착상태(데드락)이란?

 

2. 식사하는 철학자

 

3. 교착상태의 필요조건

4. 교착상태의 예방(Prevention)

 

5. 교착상태 회피(Avoidance)

5. 교착상태 검출

 

 

컴파일과 프로세스

1. 프로그래밍 언어의 종류

2. 컴파일 과정

 

 

메모리

1. 메모리 종류

 

2. 메모리와 주소

 

3. 메모리 할당방식


자료구조

재귀(Recursion)

1. 재귀란?

 

2. 재귀 함수의 간단한 예시

// 잘못된 방식의 재귀함수

function myFunction(number){
	console.log(number);
	myFunction(number + 1);
}

myFunction(1);

// 이 함수를 실행하면 정확한 종료 조건(기저 조건)이 없기 때문에
// 콜스택이 쌓여 계속 메모리 공간이 가득 차서 자동으로 종료됨
// 올바른 형식의 재귀함수

function myFunction(number){
	if (number > 3) return;
	console.log(number);
	myFunction(number + 1);
}

myFunction(1);

// 이 함수는 1 ~ 3까지는 재귀적으로 자신을 호출하다가
// 종료 조건(기저 조건)인 number > 3에 걸리게 되면 함수를 종료

 

3. 콜스택

 

4. 재귀적으로 생각하기 (재귀로 풀 수 있는 유형 알아보기)

 

5. 하노이의 탑

 


일주일 간의 회고

🍷칭찬하고 싶은 점

😅아쉬웠던 점

🛠보완하고 싶은 점

커리어 · 자기계발 기타

답변 0