일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- 쉬운 코드
- 네트워크
- 쉬운코드
- 온디바이스AI
- 시스템프로그래밍
- 갤럭시 S24
- SQL
- 반효경
- vite
- 프로세스 주소 공간
- SDK
- 코딩테스트 [ ALL IN ONE ]
- 트랜잭션
- Extendable hashing
- 운영체제와 정보기술의 원리
- BreadcrumbsComputer-Networking_A-Top-Down-Approach
- concurrency control
- 개발남노씨
- 시그널 핸들러
- recoverability
- B tree 데이터삽입
- 김영한
- 운영체제
- 코딩애플
- Git
- CPU 스케줄링
- 인터럽트
- 커널 동기화
- 데이터베이스
- 백엔드
- Today
- Total
목록분류 전체보기 (265)
티끌모아 태산
이번 시간에는 CPU 스케줄링에 대해서 배워보도록 하겠습니다. CPU는 프로그램의 기계어 명령을 실제로 수행하는 컴퓨터 내의 중앙처리장치 입니다. 그래서 프로그램이 메모리에 올라가면 프로그램 카운터라는 레지스터가 현재 CPU가 수행할 코드의 메모리 주소값을 갖게 됩니다. 그 후, CPU는 프로그램 카운터가 가리키는 주소의 기계어 명령을 하나씩 수행하게 됩니다. ⭐️결국 CPU 스케줄링은 CPU를 효율적으로 활용하기 위해 준비상태에 있는 프로세스들 중 어떤 프로세스에게 CPU를 먼저 할당할 것인지 결정하는 것 CPU burst: 사용자 프로그램이 CPU를 직접 갖고 빠른 명령을 수행하는 단계, ex) Add, Load, Store * Load Instruction: 메모리에 있는 데이터를 CPU로 읽어들이..

저번시간에는 그래프의 정의와 종류 그리고 구현하는 방식에 대해서 알아보았습니다. 그렇다면 이번 시간에는 그래프를 순회하는 방식에 대해서 알아보도록 하겠습니다. *자료구조란 데이터를 표현하고 관리하고 처리하기 위한 구조이다. *탐색이란 많은 양의 데이터 중에서 원하는 데이터를 찾는 과정. 그래프 순회 그래프를 순회 한다는 것은 모든 노드를 지나야 한다는 것입니다. 대표적인 방식이 DFS와 BFS 입니다. BFS(Breadth Frist Search) BFS는 너비 우선 탐색이라는 의미이고 쉽게 말하면 가까운 노드부터 우선적으로 탐색하는 알고리즘 입니다. 그래프 순회를 할 때, 시작점이 주어질텐데, 이를 루트 노드라 생각하여, level 별로 탐색을 하는 것이 BFS입니다. 이때, BFS를 구현하는 방식은 ..

그래프란 그래프(G)는 노드(정점, Vertex)들의 집합 V와 이들을 연결하는 간선(Edge)들의 집합 E로 구성된 자료구조입니다. 쉽게말해, 그래프는 노드와 간선으로 이루어진 자료구조이다. 그래프의 종류 무향 그래프(undirected graph): 방향이 정해져있지 않은 양방향 그래프를 의미합니다. ❗️코딩테스트에서 주로 많이 다룬다. 방향 그래프(directed graph): 방향이 정해져 있는 그래프로 단뱡향 그래프를 의미합니다. 즉, 아래 사진과 같이 방향이 정해진 그래프 입니다. 그래프를 살펴보면 들어오는 간선과 나가는 간선이 있는데, 들어오는 간선을 indgree라 하며, 나가는 간선을 outdgree라 합니다. 예를들어, 아래 노드 B는 노드 A와 C로 부터 들어오고 E로 나가기 때문에 ..

브랜치로 협업하기: pull request 예전 글에서 새로운 기능을 추가 하기 위해서는 원본 코드에서 작업을 진행하기 보다는 안전상의 이유로 원본 프로젝트를 복사해서 다른 브랜치에서 작업하는 것이 좋다고 하였습니다. 새로운 브랜치는 터미널에서 명령어를 입력해서 만들 수 있지만 github 사이트에 있는 원격 저장소에서도 만들 수 있습니다. github 사이트에서 직접 브랜치 생성하기 1. main 브랜치명을 클릭하면 브랜치를 바꾸거나 새로 만들 수 있습니다. 2. pull request 하기 새로운 브랜치를 만들어서 작업을 한 후 main 즉, 원본과 합쳐야 기능이 완성됩니다. 따라서 터미널에서 git merge 명령어를 한 후 git push 하면 됩니다. 개인적으로 작업을 할 때는 이런식으로 작업하..

이번시간에는 지금까지 배웠던 내용들을 토대로 Github 사용법에 대해서 알아보도록 하겠습니다. 내가 작업한 코드 올리기: git push git push -u origin main 위 코드를 제대로 이해하기 위해서는 Repository를 사용하는 이유에 대해서 정확하게 알고있어야합니다. 우선, Repository란 '저장소' 이다. 즉, git이라는 놈이 파일 버전(코드 변경사항 등)을 저장해두는 곳이다. 내 컴퓨터(Local) 작업폴더에는 .git 폴더가 있는데 그게 Repository입니다. 흔히 '로컬 저장소(Local repository)'라고 칭합니다. 하지만 실제로 개발을 할 때는 '원격 저장소(remote repository)'를 많이 사용합니다. 그 이유는 다음과 같습니다. 로컬 저장소 ..

3-way merge 3-way merge는 일반적인 브랜치 합병 방식으로 sample branch와 main branch에 각각 1개 이상의 commit이 일어나서 합치고 싶은 경우 중심 branch로 이동한다 branch merge sample fast-forward merge 3-way merge 방식 이외에도 다른 merge 방식이 있다. 그 중 하나가 fast-forward merge 방식이다. 이 방식은 가끔은 새로운 브랜치만 commit이 있고, 기준이 되는 main 브랜치는 신규 commit이 없는 경우가 있는데, 이때 사용하는 방식이다. 이 경우 merge를 하게 되면 "fast-forward-merge되었습니다." 라고 알려준다. 장점: 나중에 git log 같은 명령어를 통해 comm..
branch vs main 원본파일에 코드를 계속 짜다보면 혹시나 잘못해서 지금까지 해왔던 작업이 잘못되거나 하는 불안한 마음을 가졌던 적이 있을거다. 그래서 이런 불안과 걱정없이 안전하게 코드를 짜고 새로운 기능을 추가 하고 싶으면 프로젝트의 복사본을 만들어서 거기에 먼저 개발 하는 것이 좋다. 또한 브랜치 사용은 협업할 때도 유용하다. 같은 프로그램을 만드는 프로젝트에서 여려명이 동시에 똑같은 소스를 수정하고 저장해버리면 난리가 날 수도 있다. 따라서 프로젝트에서 기능을 추가하고 싶으면 우선, branch로 프로젝트 사본을 만들어서 거기에 먼저 개발을 진행한다. 그리고 테스트를 진행한 후 통과하면 main branch에 다시 합친다. 이런식으로 개발을 진행하면 더 안정적으로 프로젝트를 수행할 수 있다..
예전에는 터미널에서 직접 git add 명령어를 입력했는데, 요즘 웬만한 에디터들은 git 기능이 내장되어 있기 때문에 굳이 명령어를 입력하지 않고도 add, commit 가능하다. Git commands git add 올리고 싶은 파일명 // git add app.txt git add . // 폴더에 있는 모든 파일 올린다. 대략적인 과정 작업 폴더 (파일 1, 파일 2, 파일 3) -->(git add) --> Staging area (올리고 싶은 파일이 있는 영역) --> (git commit) --> local repository(저장소) 1. git commit 내역 조회 commit 계속하는거 아님 -> 기능을 구현했을 때 마다 커밋하는 것. commit 기록을 한 눈에 파악하고 싶으면 git..
프로세스의 생성 시스템이 부팅된 후 최초의 프로세스는 운영체제가 직접 생성하지만 그 다음부터는 이미 존재하는 프로세스가 다른 프로세스를 복제 생성하는 방식이다. 여기서 새로운 프로세스를 생성하는 프로세스를 부모 프로세스라고 하고 생성된 프로세스를 자식 프로세스라고 한다. 프로세스가 수행되는 모델은 보통 2가지가 있다. 부모와 자식이 공존하며 수행되는 모델: 부모와 자식이 CPU를 획득하기 위해 경쟁하는 관계 부모가 자식이 종료될 때까지 기다리는(wait) 모델: 자식 프로세스가 종료될 때까지 부모 프로세스는 아무 일도 하지 않고 봉쇄 상태에 있다가, 자식 프로세스가 종료되면 부모 프로세스가 봉쇄 상태에서 준비 상태가 되어 다시 CPU를 획들할 권한이 된다. 예를들어, 유닉스에서는 fork() 시스템 콜을..
프로세스를 스케줄링하기 위한 큐 운영체제는 준비 상태(Ready State)에 있는 프로세스들을 줄 세우기 위해 준비 큐(Ready Queue)를 두고 준비 큐의 맨 앞에 있는 프로세스에게 가장 먼저 CPU를 할당한다. 또한 CPU를 할당하기 위한 준비 큐 이외에도 운영체제는 특정 자원을 기다리는 프로세스들을 줄 세우기 위해 자원별로 장치 큐(Device queue)를 둔다. 예를들어, 디스크에 입출력 서비스를 요청한 프로세스들은 디스크 입출력 큐(disk I/O queue)에 줄을 서게 된다. 그러면 디스크 컨트롤러가 디스크 입출력 큐에 서 있는 순서대로 프로세스의 입출력 작업을 수행한다. 프로세스별 입출력 작업이 완료되면 디스크 컨트롤러가 CPU에 인터럽트를 발생시키며 인터럽트 처리 루틴에 의해 디스..