728x90
반응형

전체 글 322

PintOS 프로젝트 2주차 [User Programs / System Call] (1)

95개의 테스트 케이스 중 15개를 실패한 코드입니다. 주의해서 참고하세요.pass tests/userprog/args-nonepass tests/userprog/args-singlepass tests/userprog/args-multiplepass tests/userprog/args-manypass tests/userprog/args-dbl-spacepass tests/userprog/haltpass tests/userprog/exitpass tests/userprog/create-normalpass tests/userprog/create-emptypass tests/userprog/create-nullpass tests/userprog/create-bad-ptrpass tests/userprog/cr..

[Baekjoon 2589 / Java / 골드5] 보물섬

L이 육지고 W가 바다이다.상하좌우 육지로만 이동할 수 있다고 했을 때, 보물지도 내에서 가장 먼 두 육지의 거리를 출력하면 된다.물론 두 육지의 거리는 최단거리여야 한다. import java.io.*;import java.util.*;public class 보물섬_2589 {    // 입력값 저장할 변수, 4방향 탐색할 dx dy 선언    static int N, M;    static char[][] maps;    static int[] dx = {-1, 1, 0, 0};    static int[] dy = {0, 0, -1, 1};    public static void main(String[] args) throws IOException {        BufferedReader br =..

Algorithm/BFS 2024.05.31

PintOS 프로젝트 3주차 발제 후 티타임 / 이력서와 면접에 관한 팁들

자기소개서- 좋은 스토리텔링 만들기- 포트폴리오나 작업물에 대한 트러블 슈팅 과정 설명- 팀 작업이라면 내 역할에 관한 확실한 이해- 이런거 저런거 해봤다 구구절절 말하기 X, 나의 성장에 관해 큰 틀로 스토리텔링 만들기.  어차피 자잘한 거 해본 건 면접관에게 크게 중요한 점들이 아니다. 이력서를 최대한 많이 내고, 면접 경험을 최대한 많이 가져봐야 한다- 크게 가고싶지 않은 회사라도 최대한 많이 지원하기- 이력서를 조금씩 수정하여 여기저기 내 보면서, 어떤 식의 이력서가 먹히는지 파악할 수 있다.- 면접도 마찬가지로, 여기저기 면접을 다녀 보면서 어떤 말을 어떤 식으로 하면 면접관에게 어필이 되는지 파악하고 성장해 나갈 수 있다.- 1승만 하면 된다. 한 번만 붙으면 된다. 합격 확률을 조금이라도 높..

PintOS 프로젝트 2주차 커널 모드, Context Switching, fsync()

1.1 커널 모드에서 실행될 수 있는 작업-> 공유 자원 관리- 공유 자원 관리는 운영체제의 중요한 기능 중 하나로, 주로 커널 모드에서 실행된다.- 파일시스템, 메모리, 프린터 등과 같은 자원은 여러 프로세스에 의해 동시에 요청될 수 있기에, 접근과 사용을 적절히 관리하는 것이 필수적이다.- 커널 모드는 이러한 자원들에 대한 접근을 제어하고 충돌/데이터 손상을 방지한다. 1.2 공유 자원 관리가 사용자 모드에서 실행되지 않는 이유- 여러 사용자 또는 프로세스가 자원에 직접 접근할 경우, 데이터의 일관성과 안정성이 위협받을 수 있기 때문이다.  2. 운영체제에서 Context Switching이 발생하는 과정에서 어떤 정보가 저장되고 복원되는가?- 현재 프로세스의 상태(Context, 문맥)를 저장하고 ..

PintOS 프로젝트 2주차 [User Programs / Argument Passing]

PintOS는 Command Line에 명령어를 받아 프로그램을 실행할 때, 인자를 인식하지 못한다.ex ) /bin/ls -l foo bar  일 경우, 명령(파일명)과 인자를 나누지 못하고 전부 하나로 인식 Argument Passing은 PintOS의 이러한 점을 개선하여 PintOS가 명령에 대한 파일명과 인자를 구분하여 받을 수 있도록 하는 것이 목표이다. 명령어와 인자들은 command Line으로 입력된 후 process_exec 함수에서 argv 배열에 저장되며, argc 변수엔 인자의 개수가 저장된다. (파일명도 인자다)argv, argc를 이용하여 인자들은 Stack에 저장되어 User Program이 사용하게 되는데, 우리가 Stack에 저장되도록 구현해야 한다.  %rsp는 스택 포..

PintOS 프로젝트 1주차 [Threads / 트러블 슈팅]

Alarm Clock1. sleep_list 정렬기존 thread_sleep() 함수에서는 sleep_list에서 깨울 스레드를 찾기 위해 모든 리스트 요소를 다 뒤져야 했다.따라서 불필요한 리스트 순회가 존재했다.// 로컬틱 넣고, state 변경하고, sleep_list에 넣고, 스케줄러 호출하기void thread_sleep(int64_t ticks) {     ......생략.....        // 현재 스레드가 idle이 아닐 경우    if(curThread != idle_thread) {                // 로컬 틱 설정        curThread->localTick = ticks;                // localTick 기준으로 정렬되어 삽입        li..

PintOS 프로젝트 1주차 [Threads / Priority Donation]

이전 Priority Scheduling과 이어지는 글이다.이 글에서는 저번 글에 이어서, Priority Donation을 구현하는 것을 메인으로 다룬다.  thread.hstruct thread {    /* Owned by thread.c. */    tid_t tid;                          /* Thread identifier. */    enum thread_status status;          /* Thread state. */    char name[16];                      /* Name (for debugging purposes). */    int priority;                       /* Priority. */    ..

PintOS 프로젝트 1주차 [Threads / Priority Scheduling]

Priority Scheduling은 우선순위 스케줄링을 의미한다. Alarm Clock에서는 ready_list에 우선순위를 생각하지 않고 스레드를 삽입했고, 모든 스레드가 공평하게 CPU를 사용했기에 더 자주 CPU를 사용해야 할 스레드가 자주 CPU를 사용하지 못해서 비교적 비효율적 이었다.(FIFO방식) 이번엔 스레드마다 우선순위(Priority)를 부여해서 ready_list에 우선순위 순으로 정렬하여 삽입하고, 우선순위가 높은 스레드부터 CPU를 점유하도록 개선할 것이다. 또한, 이미 특정 스레드가 CPU를 사용하고 있더라도 더 높은 우선순위의 스레드가 ready_list에 들어오면 CPU를 빼앗는 선점(Preemption)도 구현할 것이다. 단 timer_interrupt마다 thread_a..

PintOS 프로젝트 1주차 [Threads / Alarm Clock]

PintOS는 알람을 구현할 때 기본적으로 busy waiting 방식을 사용한다.따라서 sleep/wakeup 방식으로 개선하는 것이 목표이다.  timer_sleep 함수는, running중인 스레드를 지정된 ticks 동안 blocked 시키는 함수이다.기존의 timer_sleep은 위 사진처럼 busy waiting이 일어나도록 설계되어 있다. 지정된 ticks가 지날 때 까지 while문 조건을 끝없이 검사하며 의미없이 CPU를 잡아먹는다.즉, 지정된 시간을 기다리기만 할 뿐인 스레드가 무의미하게 while문을 돌며 CPU자원을 소모한다. 이것이 busy waiting이며, 개선해야 하는 부분이다.  어떻게 개선해야 하는가?- thread 구조체에, 깨어나야 할 시간을 의미하는 Local Tic..

크래프톤 장병규 의장님 티타임 / 창업과 관련된 답변들

성공한 사업가가 되기 위해 중요한 점- 수도 없이 많을 테지만, 주변에 능력 있고 멋진 사람이 많아야 한다.- 혼자 잘나서 성공할 수도 있지만 그것은 어렵다.- 또한 정말 큰 기업이 되려면 운도 굉장히 중요한 요소이다. 주변에 멋진 사람을 많이 만드는 법- 가장 먼저 스스로가 멋진 사람이 되어야 한다.- 사람을 최대한 많이 만나고, 경험하고 배워야 한다.- 스스로를 사람을 많이 만나는 환경에 노출시켜야 멋진 사람을 얻을 확률도 높아진다.- 의도적으로 멋진 사람을 많이 만나려고 노력해야 한다. 창업을 하기 위해서는..- 창업과 관련된 커뮤니티, 글, 책 등에 최대한 나를 노출시켜라.- 그곳에서 최대한 많은 지식과 정보를 접하고 익숙해져야 한다. 자연스레 창업에 관한 많은 것들을 배우고 어떤 방향으로 나아가..

728x90
반응형