- 최신글
- 인기글
- 최신댓글
- 저도 같은 생각입니다 스터디 모임이 빨리 생겼으면 좋겠네요!
- 좋은 자료 감사합니다. LLVM 에 대한 수요(반도체, IT 서비스, 게임 등)가 많아지는 현 상황에서 실제로 활용할 수 있는 스터디가 활발해지면 좋을 것 같아요.
- 일본은 만화로 보는 개발 시리즈도 참 많은 것 같습니다. ㅎㅎ 지도 교수님이 일본에서 대학원을 나와서 말씀하시기를 인구가 많다보니 수요가 상대적으로 적은 분야 책을 출판해도 꽤나 많이 팔린다고 하시더라구요.
- http://google.fr/
- 프로세스 및 스레드 컨텍스트(운영체제 책의 PCB) struct task_struct 들은 각각 CPU 마다 per cpu 변수로 할당되어있는 struct rq 자료구조(운영체제 책의 대기 큐)에 큐잉되고, struct rq 구조체를 보면 여러 종류 큐가 있는 것을 확인할 수 있습니다. https://elixir.bootlin.com/linux/v6.2-rc7/source/kernel/sched/sched.h#L990 참고로, 커널 덤프를 확인할 때, 크래시 유틸리티에서 runq 커맨드로 해당 큐들의 내용물을 확인할 수 있습니다. realtime thread 는 RT 큐에 할당되어 처리합니다. https://elixir.bootlin.com/linux/v6.2-rc7/source/kernel/sched/sched.h#L663 말씀하신 유저에서 사용한 시스템 콜은 정책 인자를 넣어줄 수 있습니다. 3) If a call to sched_setscheduler(2), sched_setparam(2), sched_setattr(2), pthread_setschedparam(3), or pthread_setschedprio(3) changes the priority of the running or runnable SCHED_FIFO thread identified by pid the effect on the thread's position in the list depends on the direction of the change to threads priority: - https://man7.org/linux/man-pages/man7/sched.7.html - https://man7.org/linux/man-pages/man3/pthread_setschedparam.3.html /nptl/pthread_setschedparam.c 어떻게 설정하는지 GLIBC 유저 구현을 볼까요? /* Try to set the scheduler information. */ if (__builtin_expect (__sched_setscheduler (pd->tid, policy, param) == -1, 0)) - https://elixir.bootlin.com/glibc/glibc-2.37.9000/source/nptl/pthread_setschedparam.c#L27 커널에서 해당 시스템 콜 구현을 볼까요? /** * sys_sched_setscheduler - set/change the scheduler policy and RT priority * @pid: the pid in question. * @policy: new policy. * @param: structure containing the new RT priority. * * Return: 0 on success. An error code otherwise. */ SYSCALL_DEFINE3(sched_setscheduler, pid_t, pid, int, policy, struct sched_param __user *, param) { if (policy < 0) return -EINVAL; return do_sched_setscheduler(pid, policy, param); } static int do_sched_setscheduler(pid_t pid, int policy, struct sched_param __user *param) { struct sched_param lparam; struct task_struct *p; int retval; if (!param || pid < 0) return -EINVAL; if (copy_from_user(&lparam, param, sizeof(struct sched_param))) return -EFAULT; rcu_read_lock(); retval = -ESRCH; p = find_process_by_pid(pid); if (likely(p)) get_task_struct(p); rcu_read_unlock(); if (likely(p)) { retval = sched_setscheduler(p, policy, &lparam); put_task_struct(p); } return retval; } static int _sched_setscheduler(struct task_struct *p, int policy, const struct sched_param *param, bool check) { struct sched_attr attr = { .sched_policy = policy, .sched_priority = param->sched_priority, .sched_nice = PRIO_TO_NICE(p->static_prio), }; /* Fixup the legacy SCHED_RESET_ON_FORK hack. */ if ((policy != SETPARAM_POLICY) && (policy & SCHED_RESET_ON_FORK)) { attr.sched_flags |= SCHED_FLAG_RESET_ON_FORK; policy &= ~SCHED_RESET_ON_FORK; attr.sched_policy = policy; } return __sched_setscheduler(p, &attr, check, true); } /** * sched_setscheduler - change the scheduling policy and/or RT priority of a thread. * @p: the task in question. * @policy: new policy. * @param: structure containing the new RT priority. * * Use sched_set_fifo(), read its comment. * * Return: 0 on success. An error code otherwise. * * NOTE that the task may be already dead. */ int sched_setscheduler(struct task_struct *p, int policy, const struct sched_param *param) { return _sched_setscheduler(p, policy, param, true); } static int __sched_setscheduler(struct task_struct *p, const struct sched_attr *attr, bool user, bool pi) /* * Valid priorities for SCHED_FIFO and SCHED_RR are * 1..MAX_RT_PRIO-1, valid priority for SCHED_NORMAL, * SCHED_BATCH and SCHED_IDLE is 0. */ if (attr->sched_priority > MAX_RT_PRIO-1) return -EINVAL; if ((dl_policy(policy) && !__checkparam_dl(attr)) || (rt_policy(policy) != (attr->sched_priority != 0))) return -EINVAL; https://elixir.bootlin.com/linux/latest/source/kernel/sched/core.c#L7892 동영상 재생이 좋은 예시일 것 같습니다.
스터디
more-
2023-03-26
[커널 19차] 43, 44 주차
- 2023-03-20 [커널 18차] 95주차
- 2023-03-19 simplify 에 대해 ChatGPT에게 물... [2]
- 2023-03-11 [커널 19차] 42 주차
- 2023-03-04 [커널 19차] 41 주차
- 2023-03-04 [커널 18차] 93주차
- 2023-02-22 혹시 이 책 보신분 계신지 궁금합... [1]
- 2023-02-18 [커널 18차] 91주차
- 2023-02-18 [커널 19차] 39 주차
- 2023-02-13 [커널 18차] 90주차
- 2023-02-11 [커널 19차] 38 주차
- 2023-02-04 [커널 19차] 37 주차
- 2023-01-28 [커널 19차] 36 주차
- 2023-01-28 [커널 18차] 88주차
- 2023-01-14 [커널 19차] 35 주차
- 2023-01-08 [커널 17차] 120 ~ 121주차
- 2023-01-07 [커널 18차] 85주차
- 2023-01-07 [커널 19차] 34 주차
- 2022-12-31 [커널 18차] 84주차
- 2022-12-31 [커널 19차] 33 주차
프로그래밍
more- 2023-02-09 리눅스 스케줄링에서 SCHED_FIFO... [1]
- 2022-11-28 러스트 언어나 리눅스커널+러스트...
- 2022-10-03 __no_granule_support에서의 wfe,... [2]
- 2022-09-18 TLBi operation 질문 [5]
- 2022-07-24 ARM64 CPU Context Switch [2]
- 2022-07-24 Nested Interrupt on ARM64 [4]
- 2013-08-28 vmcore 파일 생성방법 질문 드립... [2]
- 2020-07-07 인터럽트 발생 관련해서 질문 드... [6]
- 2019-12-17 커널 빌드시 최적화 관련 질문 [5]
- 2022-01-13 mmap후 파일 올리기 [3]
- 2021-05-17 [질문-해결됨] compaction 후 기... [12]
- 2019-10-12 16기 리눅스 커널 스터디 C조 18... [3]
설치 및 활용
more- 2017-05-13 tensorflow window 설치시 오류No... [1]
- 2014-10-07 bash shell 수동업데이트 방법 문...
- 2017-09-29 그누 이맥스 시작하기 책을 구합...
- 2017-09-05 LXR(Linux Cross Reference)사용...
- 2016-04-09 [공지] 설치 및 활용 관련 Q&...
정보 및 지식 나눔
more-
2023-03-21
제4회 2023 연구개발특구 AI SPAR...
- 2023-03-13 무료세미나 [챗GPT 러닝데이] 입...
- 2023-02-16 2023 USG+ AI·데이터 문제해결 제...
- 2023-02-28 제2회 ETRI 휴먼이해 인공지능 논...
-
2023-02-09
모두의 아이디어랩
일 / 직장 고민
more- 2023-03-12 [구인] NPU 스타트업 DEEPX
- 2017-08-16 시스템프로그래머(임베디드, 리눅... [12]
- 2021-09-01 와 이런데가있었네요.. [1]
- 2021-03-30 오늘 이제 퇴근합니다..
- 2021-03-22 혹시 상사가 자기일 다 던져주면 ... [1]
관계 / 모임
more-
2023-03-29
컴파일러 스터디
- 2022-09-19 안드로이드 "플랫폼" ... [1]
- 2022-03-15 스터디 온라인 참여도 가능한가요? [2]
- 2022-02-24 22년도 커널 스터디 시작날짜 [2]
- 2022-02-24 웹어셈블리(WASM) 연구팀 소개합... [1]
가정 / 육아 / 연애 상담
more- 2021-03-26 다들 여자친구랑 요즘 뭐하세요 [2]
- 2021-03-24 [연애상담] 언제 결혼할 마음이 ...
- 2016-05-17 아이 키우고 있습니다. [1]
- 2011-07-25 용감한 글 [6]
- 2016-05-16 [공지] 이 게시판은 편하게 글쓰...
재미 및 새소식
more- 2022-08-05 김종국한테 말실수한 아이돌의 최후
- 2022-08-05 전레슬링 선수가 말하는 외국인 암내
- 2022-08-05 노빠꾸 항공사
- 2022-08-05 헬스 3~5년 했는데 변화 크게 못...
- 2022-08-05 가슴수술 의혹에 억울한 인스타 ...
Geek Life
more- 2021-03-28 geek이 무슨 뜻이에요? [1]
-
2017-04-05
유물 휴대폰 수리
- 2016-05-22 정말 죽다가 살아난 느낌. [2]
- 2008-03-11 [잡담] 삽질..
- 2016-04-09 [공지] Geek한 이야기 Geek Up을 ...
도움요청
more- 2023-01-11 커널 스터디 20기 모집 시기 질문...
- 2022-10-29 애플 실리콘 맥으로 커널 빌드하...
- 2022-08-11 안녕하세요 조언좀 구하고 싶습니... [1]
- 2022-05-07 커널 19기 공지가 있었나요? [2]
- 2022-05-06 2022년도 스터디 신청했는데 연락... [4]
공지사항
more- 2022-04-08 [공지] IAMROOT.ORG 2022년도(19... [100]
- 2021-04-12 [공지] IAMROOT.ORG 2021년도(18... [89]
- 2021-05-21 [공지] IAMROOT 18차 커널 스터디... [1]
- 2021-05-20 18기 스터디 지원 관련 누락정보 ...
-
2020-07-25
[공지] IAMROOT.ORG 2020년도(17...
[2]
.