Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 핀토스
- 크래프톤정글
- TiL
- 스택
- 나만무
- 시스템콜
- defee
- Flutter
- 자바
- 백준
- Java
- HTML
- 알고리즘
- Vue.js
- 4기
- 큐
- corou
- 오블완
- 크래프톤 정글
- CSS
- 모션비트
- 코드트리
- 리액트
- 사이드프로젝트
- pintos
- 소켓
- 티스토리챌린지
- userprog
- 자바스크립트
- JavaScript
Archives
- Today
- Total
미새문지
크래프톤 정글 week07, day59 - 잔디심기, alarm-simultaneous 구현 본문
728x90
오늘의 잔디심기
백준
|
2523
|
자바스크립트
|
브론즈3
|
별 찍기 13 |
const fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "./input.txt";
let input = fs.readFileSync(filePath).toString().split("\n");
const n = Number(input[0]);
const star = '*';
for (let i = 1; i <= n; i++) {
let result = '';
for (let j = 0; j < i; j++) {
result += star;
}
console.log(result);
}
for (let i = n - 1; i > 0; i--) {
let result = '';
for (let j = 0; j < i; j++) {
result += star;
}
console.log(result);
}
오늘도 열심히 pintOS 죽쑤느라 간단한 문제로 잔디 심기 완료
재남씨가 맡긴 alarm-simultaneous 테스트 구현 완료. 이 부분은 일정 시간 후 쓰레드를 깨우는 부분을 수정함으로 써 해결됐다.
// void thread_wakeup(int64_t ticks){
// if (list_empty(&sleep_list)){
// return;
// }
// const struct list_elem *waking_up;
// waking_up = list_front(&sleep_list);
// enum intr_level old_level;
//
// if (checker->sleep_ticks <= (ticks + timer_ticks ())){
// waking_up = list_pop_front(&sleep_list);
// old_level = intr_disable();
// list_push_back(&ready_list, waking_up);
// // list_insert_ordered(&ready_list, waking_up, value_less, NULL);
// intr_set_level(old_level);
// }
// }
void thread_wakeup(int64_t ticks) {
enum intr_level old_level;
old_level = intr_disable();
while (!list_empty(&sleep_list)) {
struct list_elem *waking_up = list_front(&sleep_list);
struct thread *checker = list_entry(waking_up, struct thread, elem);
if (checker->sleep_ticks <= (ticks)) {
waking_up = list_pop_front(&sleep_list);
list_push_back(&ready_list, waking_up);
} else {
break;
}
}
주석 처리된 기존의 thread_wakeup은 하나의 쓰레드를 받는 형식으로 작성되어 있지만, simultaneous 에서는 동시에 쓰레드를 가져와야 하기 때문에 while문으로 한번에 묶어 ticks값을 안에서 if로 체크했다. 함수 하나 수정으로 깔끔하게 해결되니 기분이 너무 좋다.
그리고 재남씨와 에린씨가 벽을 뚫고 donation 부분 테스트들을 쭉 통과했다. 둘 다 구현 너무 잘한다.
하지만 관련 테스트 중 donate-multiple에 막혀버렸다. 계속 고민하다가 결국 각자 따로 작성해보고 모이기로 했는데 쓰레드 리스트가 아닌 lock의 리스트를 가져와야 했기 때문에 새로 lock_list를 작성해주고 acquire과 release 함수를 계속 수정해봤지만 진전은 없었다. 오늘 되는데까지 하고 내일 풀 컨디션으로 쭉 달릴 예정
학습 시간 : 10 ~ 26시
728x90
'크래프톤 정글 > TIL' 카테고리의 다른 글
크래프톤 정글 week08, day61 - 잔디심기, 조건 변수, convar 성공 (1) | 2024.03.09 |
---|---|
크래프톤 정글 week08, day60 - 잔디심기, priority-donate-multiple 구현 (1) | 2024.03.08 |
크래프톤 정글 week07, day58 - demand paging, TLB, 추상화 디자인, 잔디심기 (1) | 2024.03.05 |
크래프톤 정글 week07, day57 - 잔디심기, 바이너리 세마포어로 alarm_sleep 진행 중 (4) | 2024.03.05 |
크래프톤 정글 week07, day56 - 잔디심기, 동기화 코드 학습 중 (1) | 2024.03.03 |