favicon

Jayden { do: smite }

231102(목)

🌱 성장일지 8.0

행복한 이기주의자(웨인 다이어)의 내용에 자극받아 시작하는 소박한 성장기록

  • 살아있는 꽃과 죽은 꽃은 어떻게 구별하는가?
  • 성장하고 있는 것이 살아 있는 것이다.
  • 생명의 유일한 증거는 성장이다!

⚛ (8.0)<완전 개편> 그 날의 키워드 중심으로 간단하게 정리하되 매일 꾸준히 작성할 수 있는 공간을 만들어보자.

[CS] 운영체제: 컴퓨터의 역사

튜링머신

  • 컴퓨터에 대한 가장 단순하고 매력적인 이론적 모델
  • 튜링머신에서의 메모리, 기계적 동작은 실제 존재하는 기계라기보단 가상의 논리적인 기계라고 생각하는 편이 더 정확하다.
  • 현대의 최첨단 컴퓨터로 풀 수 있는 모든 모든 문제들을 튜링머신으로도 풀 수 있다는 것이 증명되었다.
  • 즉, 알고리즘에 의해 풀리는 문제들은 그것을 풀기 위해 채택하는 컴퓨터 체계와는 무관하다는 의미

해석기관

  • 프로그램이 가능한 최초의 기계식 컴퓨터
  • 오늘날 사용 중인 모든 컴퓨터가 해석기관의 기본 구조를 따르고 있다.
  • 천공 카드로 프로그램
  • 입력, 출력, 처리, 저장 장치를 포함

기계어와 어셈블리어

  • 기계어(0과 1)로 프로그래밍을 하기엔 너무 어려웠다.
  • 기계어를 대신하여 기호를 사용하여 프로그래밍을 하기 위해 어셈블리어가 등장했다.

구조적 프로그래밍 기법

  • 인간이 한 번에 파악하기 힘든 대형 프로그램을 작성할 때 인간이 이해하기 쉬운 작은 단위들로 나뉘어 각 단위를 독립적으로 프로그래밍하는 기법

운영체제 등장 이전

  • 초창기에는 하드웨어 자체를 관리하는 일과 실제 수행시킬 프로그램을 작성하는 일을 사용자가 전부 직접 수행했다.
  • 초기에는 컴퓨터 외부에서 미리 예약해 한꺼번에 처리하는 일괄처리 방식(Batch Processing)을 사용했다.
  • 일괄처리 방식의 비효율성을 인식하고 컴퓨터 자체가 자동적으로 처리해주도록 하는 방식을 고민하여 운영체제가 탄생했다.

메인프레임 컴퓨터

  • 방 하나 크기만 한 컴퓨터
  • 현재에도 은행, 항공사, 정부 기관 등에서 사용되고 있다.
  • 시분할 방식을 사용하여 여러 사용자가 동시에 컴퓨터를 사용할 수 있도록 했다.(사용자는 마치 컴퓨터를 독점하는 것처럼 느낄 수 있다.)

슈퍼 컴퓨터(고성능 컴퓨터)

  • 메인프레임 컴퓨터보다 뛰어난 성능을 가진 컴퓨터
  • 원격으로 사용하고 사용료를 지불하는 새로운 형태의 컴퓨팅 방식으로 사용되며 이를 클라우드 컴퓨팅이라고 한다.
  • 고성능 컴퓨터의 능력을 조금씩 분할하여 한 대의 물리적인 컴퓨터를 여러 사용자들이 공유해서 사용한다.
  • 이렇게 사용자가 느끼는 독자적인 컴퓨터를 가상 머신(Virtual Machine)이라고 하며 이 기술을 가상화(Virtualization)라고 한다.

[알고리즘] DFS와 BFS 간단하게 구현하기

DFS

function DFS(graph, start) { const visited = []; let stack = [start]; while (stack.length !== 0) { const current = stack.pop(); if (!visited.includes(current)) { visited.push(current); stack = [...stack, ...graph[current]]; } } return visited; }

BFS

function BFS(graph, start) { const visited = []; let queue = [start]; while (queue.length !== 0) { const current = queue.shift(); if (!visited.includes(current)) { visited.push(current); queue = [...queue, ...graph[current]]; } } return visited; }

DFS와 BFS 알고리즘 문제는 단순히 탐색을 하는 것보단 탐색을 하면서 문제에서 요구하는 조건에 맞는 무언가를 찾아야 하는 경우가 많다. 계속 문제를 풀면서 익숙해지도록 하자!

📝 회고

CS 공부 방법을 바꾸니 좀더 흥미롭게 공부가 되는 것 같아서 기분이 좋다. dfs, bfs는 구현 자체는 쉬운데 문제 조건에 맞는 값을 적절히 뽑아내는 게 쉽지 않은 것 같다. 자주 출제되는 문제를 풀어보면서 계속 익숙해지도록 하고 사고의 흐름을 좀더 빠르게 가져갈 수 있게 해야겠다.

참고

Copyright 2023. all rights reserved by Jayden