[04.01/week03]TIL

CHO WanGi·2025년 4월 1일

KRAFTON JUNGLE 8th

목록 보기
18/89

오늘 한줄 요약

바쁘다 바빠 정글...

오늘 공부한 것

  • 단일 프로세서 시스템의 동시성
  • 스택을 활용한 DFS
  • OS관점에서의 추상화

새로 배우게 된 것

단일 프로세서 시스템의 동시성

실제로 여러 프로그램을 한번에 돌리는게 아니라, 프로세서가 빠르게 교차 실행하면서 마치 동시에 실행시키는 것 '처럼' 보이는 것

실제로 여러개를 돌리는 것은 병렬성!

스택을 활용한 DFS

def dfs(graph, start_node):
	visit = list()
    stack = list()
    stack.append(start_node)
    
    while stack:
    	node = stack.pop()
        if node not in visit:
        	visit.append(node)
            stack.extend(graph[node])
    return visit
  • 재귀를 활용한 DFS
def dfs(graph, v, visited):
  visited[v] = True
  print(v ,end=' ')
  for i in graph[v]:
    if not visited[i]:
      dfs(graph, i, visited)
항목첫 번째 코드두 번째 코드
💡 방식반복문 + 스택 이용 (비재귀 DFS)재귀 함수 이용
🧠 호출 구조명시적 stack으로 흐름 제어함수 호출 스택을 사용
💻 구현 구조while stack: 반복문dfs() 함수 자기 자신을 호출
📝 방문 체크if node not in visit: → 리스트 기반visited[v] = True → 배열 기반
🔁 방문 순서 제어stack.extend(graph[node]) 순서에 따라 다름for i in graph[v]: 순회 순서에 따라
🧱 메모리스택 직접 사용 → 메모리 안정적재귀 깊이에 따라 최대 호출 제한 영향 받음
📌 종료 조건스택이 빌 때까지모든 노드 방문 시 종료
📎 사용 상황재귀 깊이가 깊을 때 적합 (안정적)간결하고 직관적, 소규모 그래프에 적합

차이는 위와 같다. 아무래도 재귀로 풀다보면 RecursionError 가 발생할때가 있는데,
스택으로 구현할 경우 이런 에러가 발생하지 않는다는 점에서 스택으로 구현하는 연습도 많이 해봐야 겠다.

OS 관점에서의 추상화

  • 파일은 입출력 장치의 추상화
  • 가상메모리는 프로그램 메모리의 추상화
  • 프로세스는 실행중인 프로그램의 추상화
  • 가상머신은 OS, Processor, Program 모두를 포함하는 컴퓨터 전체의 추상화

공부하다가 아쉬운 점

원래 CSAPP 같은 경우 여러번 읽었는데 문제를 푸느라 1회독 뿐이 못했다...
아침에 한번 읽어보자...ㅠ

profile
제 Velog에 오신 모든 분들이 작더라도 인사이트를 얻어가셨으면 좋겠습니다 :)

0개의 댓글