Pintos Project 1 : Priority Scheduling
카이스트 핀토스 과제 : Project 1 : Priority Scheduling 두 번째 과제인 Priority Scheduling을 해결해나가보자! Priority Scheduling Pintos에서 우선순위 스케줄링(priority scheduling)과 우선순위 기부(priority donation)를 구현해라. ready_list에 ...
카이스트 핀토스 과제 : Project 1 : Priority Scheduling 두 번째 과제인 Priority Scheduling을 해결해나가보자! Priority Scheduling Pintos에서 우선순위 스케줄링(priority scheduling)과 우선순위 기부(priority donation)를 구현해라. ready_list에 ...
카이스트 핀토스 과제 : Project 1 : Alarm Clock 이제 첫 번째 과제인 Alarm Clock을 해결해나가보자! Alarm Clock devices/timer.c에 정의된 timer_sleep()을 다시 구현해라. 현재 제공된 구현은 동작은 하지만 busy waiting을 사용한다. 현재 시간을 계속 확인하고, 충분한 시간이 지...
카이스트 핀토스 과제 : Project 1 : introduction 이 사이트에 작성된 내용을 바탕으로 작성한 글입니다. Project1에서 봐야할 디렉토리 구조 threads/ : 처음부터 수정해야할 부분 devices/ : 키보드, 타이머, 디스크 등 I/O 장치와의 인터페이스를 처리 timer.c 파일에서 타...
프로세스(Process)와 스레드(Thread) 프로세스는 실행 환경과 자원을 제공하는 컨테이너 역할을 하고, 스레드는 실제 CPU를 사용해 코드를 하나하나 실행한다. 프로세스 A는 단일 스레드이며, 프로세스 B는 멀티 스레드이다. 프로세스 (Process) 란? 프로그램은 실제 실행하기 전까지는 단순한 파일에 불과하다 프로그램을 ...
들어가기에 앞서 교착상태(Deadlock)와 임계 영역(Critical Section)라는 키워드를 이해해야한다. 사람 A와 사람 B에겐 물컵🥛과 물통🫖이 있다. (물컵🥛과 물통🫖이 둘 다 있어야 물을 마실 수 있다고 가정하자) 사람 A는 물을 따라마시기 위해 물컵🥛을 먼저 챙겼고, 사람 B는 물을 따르기 위해 물통🫖을 먼저 챙겼다. 그럼 사람 ...
이번 6주차에는 예지님과 단 둘이 팀 활동을 했었다. 시작하기 전에 내가 1인분 몫을 톡톡히 잘 해낼 수 있을까?하며 걱정했었는데, 오히려 둘이라서 모르는 부분을 편하게 얘기 나누고, 서로 궁금한 점에 대해 토론하기도 편했다. 이번 주차 과제인 Red-Black tree를 구현한 부분을 코어타임 때 함께 얘기나누고 있었는데, 예지님께서 의문점을 제기...
1주차 회고를 작성한 뒤로 벌써 이렇게 시간이 흘러서 5주차가 끝났다. 주차가 끝날때면 나는 아직 해야할 것들이 덜 끝났기에 나 혼자 주차가 계속 연장되어가는 느낌이었다. 그렇게 주차마다 회고록을 작성해야겠다는 다짐이 무참히 무너졌다. 그러다보니 내가 이번 주차에 뭘 느꼈고, 뭘 잘했는지, 무엇을 배웠는지를 “그랬었지”하며 추억 회상하는 것처럼 기억...
정글 공지방에 향로님이 커리어 특강을 오신다는 소식을 본 이후로 오늘까지 너무 설렌 상태로 기다렸다. 개발자를 꿈꾸기 시작할 때 보았던 향로님 영상으로 인해, 개발바닥을 알게 되고 자연스럽게 열정넘치는 개발자 분들을 보게 되며 함께 스터디도 진행했었고 영한님도 알게 되었다. 그래서인지 혼자 쌓아온 내적 친밀감이 컸다. 이 내적 친밀감과 향로님을 가까...
글의 목차 이번 글에선 최단 경로 알고리즘, 위상정렬에 대해 다룹니다. 최단 경로 알고리즘 1-1. 다익스트라 1-2. 플로이드 워셜 위상정렬 알고리즘 문제 중 최단 경로 (가장 짧은 경로를 찾는 알고리즘) 유형이 있다. 최단 경로 알고리즘에는 다익스트라 최단 경로 알고리즘, 플로이드 워셜, 벨만 포드 알고리즘 이 3가지가 대표적이...
글의 목차 이번 글에선 이진 트리와 최소 신장 트리에 관한 내용을 다룹니다 트리 이진 트리 (Binary Tree) 이진 트리 순회 (전위, 중위, 후위 순회) 최소 신장 트리 (Minimum Spanning Tree) 4-1. 찾는데 사용되는 알고리즘 2가지 (크루스칼, 프림) 트리 트리는 그래프와 같이 노드(Node) ...
글의 목차 이번 글에선 그래프 관련 내용을 다룹니다 그래프 그래프 구현 방법 2-1. 인접 행렬 (Adjacency Matrix) 2-2. 인접 리스트 (Adjacency List) 그래프 탐색 4-1. 깊이 우선 탐색(DFS) 4-2. 너비 우선 탐색(BFS) 그래프 그래프는 노드(N, node) 와 그 노드를 연결하는 간선...
주차별로 공부 키워드가 주어지는데, 그 키워드를 잘 잡고 가지 않았던것 같아 3주차를 시작하기 전에 이 키워드들을 한번씩 회고해보며, 제 글로 설명해보면 좋을 것 같아서 글을 작성하게 되었습니다. 글의 목차 간단하게 아래 목차별로 개념을 훑어보기 배열 문자열 반복문과 재귀함수 복잡도(BigO, 시간, 공간) 정렬 배열 ...
0주차 팀별 프로젝트를 마치고 1주차부터 본격적인 알고리즘 학습을 진행하였습니다. 바로 1주차 과정 컴퓨팅 사고로의 전환인데요. 매 주차별로 알고리즘 문제들이 주어지고 관련 키워드들을 스스로 학습하며 해결해나가는 것입니다. 1주차의 키워드는 정렬, 재귀함수, 완전탐색 등이 있었습니다. 이 중에 재귀함수가 제겐 너무 어려웠는데요. 이해하기 위해서 코...
크래프톤 정글에서 0주차 ‘정글 입성’은 팀별 프로젝트를 진행하는 것이었습니다. 본격적인 정글을 시작하기 전에 서버에 배포하여 돌아가는 프로그램을 만들어야했습니다. 저희 팀은 정글에서 살아남기 - 웹 커뮤니티 서비스를 구현하였습니다. 웹 커뮤니티에 걸맞게 개발, 일상으로 크게 카테고리를 두어서 궁금한 부분, 일상 고민 등등 자유롭게 올릴 수 있는 ...
4주차 미션을 보고 처음으로 든 생각은 이걸 어떻게 구현하지?하며 처음 보는 요구사항에 많이 당황했었습니다. 그래도 일단 부딪혀보자. 하며 무작정 뛰어 들었습니다. 그렇게 마주한 첫번째 벽은 구현에 필요한 상품 목록과 행사 목록을 파일 입출력을 통해 불러온다. 였습니다. 일단 불러와야 기능구현을 시작할 수 있을 것 같아 파일 입출력에 대해 검색해보...
2주차 과제에서 테스트코드를 작성하지 못했었어서 3주차에는 작은 기능이라도 테스트해보고자 했으며, 일급컬렉션과 enum에 대해 공부한 후 코드에 적용해보았다. 그 과정 속에 배웠던 점과 아쉬운점에 대해 회고록을 남기고 싶다. [코드리뷰를 통해 배운점들] 일급 컬렉션 활용 비즈니스 로직에 대한 테스트 작성 검증 역할을 위한 클래스를 굳이...
지난 1주차를 진행 후, 많은 분들께 코드 리뷰를 받았었고, 우테코에서 피드백도 주셨다. 이것들을 정리해둔 뒤, 과제에 적용하려 노력했고, 최대한 지키자! 하는 목표를 세우고 2주차 과제를 진행했다. [리뷰를 통해 배운점들] stream을 사용한다면 한줄에 .하나만 찍기 1-1) 가독성이 더 좋아짐 view 적용해보기 (입력하거나 출력...
프리코스를 진행하면서 느낀점, 어떤 고민들이 있었는지, 문제 해결 과정 등을 회고글에 담아보려한다. 과제를 딱 받고, 처음 요구사항을 읽었을때, 까마득한 느낌을 받았다. 글로 읽었을땐, 이렇게 하면 되겠는데~했지만, 막상 머릿속으로 어떻게 구현해나갈지 상상하니, 어디서부터 손대야할지 우왕좌왕했다. 하지만 일단 go! 하면서 기능을 구현하기 ...
배열 리스트는 아래와 같은 단점을 가지고 있었다. 사용되지 않고 낭비되는 공간 배열 크기를 미리 정해져있기에 사용하지 않으면 메모리가 낭비됨 데이터 중간에 추가 추가할 공간을 확보하기 위해 오른쪽으로 이동시켜야 함 이 단점들을 어느정도 극복해주는 자료구조가 있다. 자신...
먼저 Array(배열) 특징에 대해 알아보자. 배열의 크기를 초기에 정적으로 정한다 (정적할당) ex) Hello[] hi = new Hello[7]; 배열의 크기를 변경하지 못함 따라서 메모리 낭비가 될 수 있으며, 크기가 부족할 수 있음 자료를 찾을 때, 인덱스(index)를 사...
정보처리기사 필기 제 2과목인 소프트웨어 개발부분을 정리하였습니다. 자료 구조의 분류 선형 구조(Linear Structure) 배열(Array) 선형 리스트(Linear List) 연속 리스트, 연결 리스트 스택(Stack) ...
정보처리기사 필기 제 1과목인 소프트웨어 설계부분을 정리하였습니다. 객체지향 기법 캡슐화(Encapsulation) 데이터(속성)과 데이터를 처리하는 함수를 하나로 묶는 것 정보은닉과 밀접한 관계 재사용이 용이 상속성(Inheritance) 상위클래스(부모 클래스...
컴포넌트 스캔이란? 자바코드의 @Bean, XML의 <bean> 등 설정정보에 직접 등록할 스프링 빈을 작성해주었다면 컴포넌트 스캔은 설정정보에 작성하지않아도 자동으로 스프링 빈을 등록해준다. 컴포넌트 스캔을 하기위해선 설정 정보에 @ComponentScan을 붙여주면 된다. 그럼 @Component 애노테이션이 붙은 클래스들을 스캔해 ...
스프링 기본 빈 등록방식은 ‘싱글톤’ 방식이다. 따라서 스프링 컨테이너는 객체 인스턴스를 싱글톤으로 관리해준다. 싱글톤 방식에 대해 설명하기 앞서, 싱글톤 패턴에 대해 알고 넘어가자. 싱글톤 패턴이란? 객체 인스턴스가 단 1개만 생성되는 디자인 패턴이다. 싱글톤 패턴 구현 코드 new SingletonPattern()해서 객체를 미리 ...
저는 Chirpy 테마를 사용하고 있으며, 게시글 작성에 있어 도움이 될만한 것들을 소개하고자 합니다. Chirpy 테마를 기준으로 설명드리는 것이기에 읽는데에 유의바랍니다. 블로그 글이 올라가는 파일형식 ├── 📁_posts │ ├── 📃2024-03-07-Constructor(생성자).md │ └── 📃2024-03-16-static...
static은 ‘정적인’, ‘고정된’ 이라는 뜻을 가지고 있다. static이 붙은 변수나 메서드는 클래스와 함께 자동으로 메모리의 static 영역에 생성된다. 자동으로 메모리에 올라가기 때문에 객체 생성 없이 사용이 가능하다. ‘고정된’이라는 단어 의미처럼 static 키워드가 변수나 메서드 앞에 붙으면 클래스가 관리하기 때문에 클래스에 고...
생성자는 왜 쓸까? 객체를 생성할때, 초기값을 설정 하기위해 사용한다. 그럼, 여기서 질문이 있을것이다. 왜? 초기값을 설정하지? 간단한 실생활 예시로 설명하겠다. 손님이 카페에 가면 음료를 주문할 때의 상황을 떠올려주세요. public class Coffee { private final String menu; private ...
접근 제어자 설명 private 모든 외부 호출 X default 같은 패키지 호출 O protected 같은 패키지, 다른 패키지(상속관계) 호출 O pub...
IntelliJ 단축키 단축키 설명 F2 에러로 이동 메서드 클릭 -> Ctrl + B 해당 메서드로 이동시켜줌 Ctrl + D 코드 복사 Ctrl +...