본문 바로가기

전체 글221

[운영체제] ep2) 프로세스(process) ㅁ프로세스(process): 실행 중인 프로그램 (실행/스케줄링의 단위 및 자료구조)보조기억장치에 저장된 프로그램을 메모리에 적재하고 실행하는 순간, 그 프로그램은 프로세스가 된다그리고 이 과정을 "프로세스를 생성한다"라 표현한다   + 프로세스를 직접 확인하는 방법- Windows: 작업 관리자 프로세스 탭 - UNIX체계: ps 명령어   포그라운드(foreground) 프로세스: 사용자가 볼 수 있는 앞 공간에서 실행되는 프로세스vs백그라운드(background) 프로세스: 사용자가 보지 못하는 뒷 공간에서 실행되는 프로세스이 백그라운드 프로세스 중에서 사용자와 상호작용하지 않고 혼자 묵묵히 일을 수행하는 프로세스들을 Windows에서는 서비스(service)라 하고 UNIX체계에서는 데몬(daem.. 2024. 4. 8.
[자료구조] ep2+) 하노이 탑 구현 하노이 탑이란? B 기둥을 이용해서 A 기둥에 놓인 크기가 다른 원판을 C 기둥으로 옮기는 문제이다. 이때 원판은 한 번에 한 개씩만 옮길 수 있으며, 작은 원판 위에 큰 원판이 놓일 수 없다.+ 이동횟수 공식은 (2^n - 1) 회이다 e.g. n = 1인 경우 1회의 이동, n = 2인 경우 3회의 이동, n = 3인 경우, 7회의 이동       문제)원반의 개수 N을 입력받아, 하노이 탑 문제의 수행과정을 출력하는 프로그램을 작성해라     의사코드)n: 이동해야 할 원반 수from: 출발 기둥aux: 보조 기둥to: 목표 기둥  모식도)  //A에 1~N 쌓여있음 A     B     C 1 2 . . N//N-1개를 A에서 C를 거쳐 B로 이동 A     B     C N     1      .. 2024. 4. 7.
[자료구조] ep2) 재귀(Recursion) ㅇ재귀(recursion): 종료조건을 만족하기 전까지 자기 자신을 계속해서 호출→ 종료조건을 잘 설정해야 한다진행 방향: 종료조건을 향하여 진행작동 원리: stack을 생각하자 (LIFO, 후입선출)   이 작동원리에 대한 마인드셋이 너무 너무 중요하다예를 들어 재귀함수는 3건의 요청이 들어온다 하면 한 함수가 3건의 요청을 처리하는 것이 아닌, 각각 3개의 함수가 1건의 요청을 처리하는 것이다 (재귀함수를 이해하기 위한 최고의 그림이자 예시이다, 세종대 컴공 교수님들 최고!)          참고 및 출처: 실전 C프로그래밍(나중채교수님, 한동일교수님), 데이터 구조 원리와 응용(국형준교수님), C언어로 쉽게 풀어 쓴 자료구조(천인국) 2024. 4. 7.
[자료구조] ep1+) 비트행렬로 배우는 시간복잡도의 중요성 그림과 같은 비트행렬 A가 있다고 하자, 1을 카운트하는 방법에는 다양한 방법들이 존재한다여기서 나는 2가지 방법을 얘기하려 한다 1. 가장 일반적인 방법으로 이중포문을 이용해 각 행마다 0이 나올 때까지 카운트를 하는 방법: O(n^2) 2. 제일 하단 좌측에서 시작해 우측 상단을 향해 지그재그 방식으로 올라오며 카운트를 하는 방법: O(n) 1번 방식은 시간복잡도가 O(n^2)이므로 n값이 커질수록 실행 시간은 제곱수로 증폭하게 된다반면에, 2번 방식은 시간복잡도가 O(n)이므로 n값이 커질 수록 실행 시간은 그저 선형적으로 증가하게 된다따라서 우리는 실행 시간의 측면에서 2번 방식이 압도적으로 더 좋은 것을 알 수가 있다그렇기에 우리는 상황에 맞는 자료구조와 알고리즘을 설계할 수 있는 능력을 길러야.. 2024. 4. 7.
[자료구조] ep1) 자료구조 기본 지식들 ㅇ다차원 배열- 3차원 배열 - 4차원 배열   ㅇ빅오(Big O) 표기법: 연산의 횟수를 대략적(점근적)으로 표기"최악의 case 실행시간을 고려한다" [예시](1) 7n-2: O(n)(2) 3n^3 + 20n^2 + 5: O(n^3)(3) 3log(n) + log(log(n)): O(log(n))(4-1) n까지의 반복문: O(n)(4-2) n까지의 이중반복문: O(n^2)(4-3) n까지의 삼중반복문: O(n^3)(5) 조건문에서의 실행시간은 최악의 case로 합산한다+ O(log*n)은 중첩 log(n)을 의미   함수 증가율의 상한을 표시!※ 빅오메가, 빅세타 표기법과 공간복잡도는 생략   ㅇ의사코드 or 수도코드(pseudo-code): 컴퓨터가 아닌 인간에게 읽히기 위해 알고리즘을 간략하게 .. 2024. 4. 7.
foo bar baz 의미 및 유래 foo, bar, baz, fie, foe, fee, ...프로그래밍 언어 공부를 하다 보면 foo, bar, baz 등의 변수명 등을 본 적이 있을 것이다 (특히 스택 오버플로우에서 많이 보인다)우리나라로 치면 변수명을 갑, 을, 병, 정 느낌으로 선언하는 것이다 그렇다면 이 foo, bar, baz의 유래는 어떻게 될까?이 foo, bar, baz의 유래는 아무도 모른다그치만 유래에 대한 추측들로 크게 3가지가 있다   1. 2차세계대전 당시 미 육군에서 쓰이던 여러 줄임말 중, 개판이 됐다는 뜻인 FUBAR(Fucked Up Beyond All Recognition / Repair)에서 Foo와 Bar가 유래했다는 설  2. 1930 ~ 1952년 사이에 만화가 Bill Holman 이 그린 Smo.. 2024. 3. 26.
[컴퓨터 구조] 후기 컴퓨터 구조에 대한 복습 및 정리를 끝마치게 되었다회사 프리랜서일과 병행하느라 조금 디뎠지만, 그래도 이전에 한 번 깊숙이 배웠던 내용인지라 빠르게 진행할 수가 있었다세종대 전자정보통신공학과에는 스파르타라는 별명을 가지신  SoC 권위자 이성주교수님이 계신다 (지금은 반도체시스템공학과에 가신 걸로 알고 있습니다) 그 교수님의 컴퓨터구조론 강의평을 보면 컴퓨터 구조에 대해 아주 깊고 빠삭하게 배울 수 있지만 체감상 6~9학점에 스파르타식으로 너무 너무 힘들다는 강의평들이 여럿 적혀있다솔직히 보고 좀 겁이 났지만 컴퓨터 구조가 CS에 있어서 근간이 되는 중요한 과목이라 생각하여 수강신청 때 1순위로 신청을 하였다 솔직히 이제 와서 생각해 보면 수강하는 동안에는 많이 힘들었다 컴퓨터시스템구조론(William .. 2024. 3. 5.
[운영체제] ep1) 운영체제의 큰 그림 운영체제(Operating System): 실행할 프로그램에 자원을 할당하고, 프로그램이 올바르게 실행되도록 돕는 특별한 프로그램(컴퓨터에서 가장 중요한 프로그램이다)여기서 자원이란 시스템 자원으로써 프로그램 실행에 마땅히 필요한 요소들을 말한다 e.g. CPU, 메모리, 보조기억장치, I/O, 패킷, 파일 등 운영체제를 잘 알려면 커널의 개념을 확실하게 알고 가야 한다ㅇ커널(kernel): 운영체제의 핵심 서비스를 담당하는 부분메모리에는 커널 영역과 사용자 영역으로 나뉘어져 있으며, OS는 커널 영역에 적재되어 자원 할당과 프로그램 실행에 도움을 준다 앞으로 운영체제를 지칭할 때는 특별한 언급이 없는 이상 커널을 지칭한다고 생각하면 된다    대부분의 운영체제 서비스는 커널에 있지만 커널에 포함되지 않.. 2024. 3. 3.
[컴퓨터 구조] 추가지식2) SMP, 클러스터, NUMA, 클라우드 컴퓨팅 [병렬 프로세서 시스템의 유형]- 단일 명령어 + 단일 데이터 스트림: SISD(Single Instruction Single Data) - 단일 프로세서- 단일 명령어 + 다중 데이터 스트림: SIMD(Single Instruction Multiple Data) - 벡터, 배열 프로세서- 다중 명령어 + 단일 데이터 스트림: MISD(Multiple Instruction Single Data) - 거의 사용 x- 다중 명령어 + 다중 데이터 스트림: MIMD(Multiple Instruction Multiple Data) - 메모리 공유: SMP, NUMA 시스템 / 분산된 메모리: 클러스터  ※ thread: segment of processtask: Linux에서 칭하는 process 또는 thre.. 2024. 3. 2.