Code Monkey home page Code Monkey logo

osfall2019's People

Contributors

hyojeonglee avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

osfall2019's Issues

[proj1] tasklist_lock 관련질문

안녕하세요 조교님, tasklist_lock 관련해서 질문을 드립니다.

현재 시스템콜을 등록하고 커널을 컴파일 하기 전에 debugfs로 코드를 작성하고 있는데요, 다음과 같이 tasklist_lock을 사용하면 unknown symbol이라는 에러가 발생합니다.

#include <linux/sched/task.h>

read_lock(&tasklist_lock);
preorder(root, nr);
read_unlock(&tasklist_lock);

locking 부분을 제거하고 코드를 실행하면 에러 없이 제대로 동작하는데 read_lock을 넣으면 다음과 같은 에러 메세지가 뜹니다.
스크린샷 2019-10-03 오후 7 13 49

dmesg에서 뜨는 에러 문구는 Unknown symbol tasklist_lock (err -2)입니다.

문제가 발생하는 원인이 무엇일까요?

submission 관련 질문

안녕하세요 조교님. 계속 질문을 드려서 죄송합니다.

제출 형식과 관련해서 질문을 드릴게 있습니다.

1. 제출 파일 관련 질문

project 1 pdf 자료에

  • Check your source code before submission
    • There are some codes which were not compiled

라고 되어 있는데 제출시에 저희가 반드시해야할 부분이

  1. 커널 전체 컴파일하여 push
  2. 테스트 소스코드인 test.c를 바이너리로 컴파일하여 test 라는 이름의 실행 파일 만들고 push

라고 생각하면 될까요? 그리고 라즈베리파일 연결시 필요한 SD card mount 디렉토리도 특정한 이름으로 생성해 두어야하나요?

2. 채점시 test 방법

과제 채점시 white box 테스트를 한다고 되어 있는데 출력 값 이외에 어떤 것을 보시는 건가요??

Multicore 상황에서 load balancing관련 질문입니다.

조교님 안녕하세요, 멀티코어 환경 상에서 WRR Load Balancing관련해서 질문이 있습니다.

  1. 스펙에 명시된 2000ms 는 global 한 시간인지, 아니면 by CPU 시간인지 궁금합니다. 즉,
  • 2100ms에 CPU A가 로드밸런싱을 수행하면, 다음 로드밸런싱은 4100ms시점이다. 이 시점에 scheduler_tick을 통해 로드밸런싱이 모든 CPU에서 (이상/이론적)동시에 호출되며 그중 제일 먼저 시작한(락을 잡은?) CPU만 로드밸런싱을 시작한다.
  • 2100ms에 CPUA가 로드밸런싱을 수행, 2500ms에 CPUB가 로드밸런싱을 수행하면, CPUA는 4100ms 에, CPUB는 4500ms에 수행한다

인지 궁금합니다.

  1. 현재 저희는 스펙 문서를 근거로 두 가지중 첫번째로 일단 유추/가정하고 과제를 하고 있습니다. 그 조건 하에서, 위 볼드체로 된 부분을 구현하는데 어려움을 겪고 있습니다.
  1. 저희가 이해한 바로는 fair scheduler는 위에서 두번째 방식으로 구현하는 것으로 이해했습니다. (rq->next_balance를 관리하는 것이 각각 CPU별로 관리하고 다른 CPU의 next_balance를 안 건드리기 때문)
  2. 또한, fair scheduler에서는 load balance에 진입하고 나올때 rculock을 사용하는 것을 확인했습니다.
  3. 만일 global load balancing(1. 에서 첫번째)로 가게 된다면, fair scheduler랑 다른 lock mechanism (rcu lock보다 강력한/다른 CPU들은 진입을 못하게 막는)을 설정하고, next_balance도 모든 CPU가 관리할 수 있도록 해야 할 것 같은데, 정확히 이해한 것인지 궁금합니다.
  1. CPU hotplug관련해서, FAQ에 정리하신 내용을 보면
  1. 일반 WRR동작시 비울 CPU는 hard code해도 된다.
  2. Load balancing은 임의의 CPU를 임의의 시점에 꺼도 대응해야 한다. (다만 이 기능은 코드 채점을 통해 이루어진다)

는 것으로 이해했습니다. 정확히 이해한 것이 맞는지 궁금합니다.

감사합니다, 좋은 하루 보내시기 바랍니다.

[updated] 중간고사 점수 변동 관련

중간고사 클레임 반영으로 몇몇 문항(4, 6번) 채점기준이 변경되고 이에 따라 점수 변동이 있어서,

변동 이후 성적 및 시험지 확인은 오늘 (11/5) 오후 3:15 이후 혹은 내일 (11/6) 가능합니다.

+점수 통계 #38 에 업데이트되었습니다.

+변동된 점수 etl 개인 성적부에 반영되었습니다.

프로젝트2 디자인리뷰 FAQ

Q1. WRR은 priority를 어떻게 줘야 하나요?
A1. rt_prio 부근을 수정하셔서 priority에 관계 없이 동작하게 만드시면 됩니다.

Q2. Hotplug에 대한 처리는 어떻게 해야 하나요?
A2. CPU를 굳이 꺼가면서 테스트 하지는 않겠습니다. 따라서 비우는 run queue를 하드코딩하셔도 상관 없습니다.

Q3. Load balancing은 어떤 CPU를 써야 하나요?
A3. Load balancing만은 hotplug가 일어나는 상황에서 잘 돌아가는지 코드를 확인해서 채점하겠습니다. 실제로 hotplug를 해보지는 않겠지만, 특정 CPU가 꺼지더라도 load balancing은 되어야 합니다 (arm64 환경만 고려합니다).

Q4. 디버깅은 어떤 식으로 해야 하나요?
A4. kernel/sched/debug.c를 적당히 고친 후, cat /proc/sched_debug를 입력하시면 scheduling 관련 디버깅 정보가 나옵니다. 일반 계정 테스트의 경우 ID: owner, PW: tizen을 사용하시면 됩니다.

Q5. wrr 스케줄러가 적용되는 시점이 언젠가요?
A5. 부팅때부터 모든 태스크가 wrr로 실행되는 방식이 아닙니다. (과제 명세의 ‘Tasks will manually be switched to use SCHED_WRR using system call sched_setscheduler().’ 부분 참고) 즉, 유저레벨에서 sched_setscheduler 시스템콜을 사용해 wrr로 policy를 변경해주시면 됩니다.

Q6. CPU 하나의 wrr_rq를 비우도록 구현할 때 setscheduler의 동작
A6.
(1) 가용한 다른 CPU가 있으면 "태스크를 그 CPU에서 실행"되게하고 정책을 wrr로 바꿈
(2) 가용한 것이 없을 때는 에러를 리턴
이 때, "태스크를 특정한 CPU에서 실행"되게하는 시스템콜이 있으니 활용하시면 됩니다.

(기타) 데모 영상 예시: https://drive.google.com/open?id=1K-4x7ILSbdfcH0IovhOqrxnL1OzOWlOG

uid vs loginuid

uid출력은 어떤 UID를 해야 하나요?

task_struc안에는 loginuid밖에 안보이네요
다른 uid들도 많은 것 같구요

일정 공지

안녕하세요, 조교입니다. 시험보시느라 고생 많으셨습니다!

Project 4는 공지했듯 12/17 13:00까지이고 이날 발표는 진행하지 않으니 메일로 제출만 해주시면 됩니다.

과제/시험 성적 관련 및 기기반납 일정은 다음주 중 공지하겠습니다.

comm을 가져오는 방법 관련 질문

task_struct의 comm 을 가져오기 위해 get_task_comm 매크로를 사용하려고 했습니다. 그러나 prinfo의 comm 배열의 크기와 커널에서 사용하는 comm의 길이가 서로 길이가 달라 컴파일이 되지 않습니다.

** include/linux/prinfo.h
struct prinfo {
    ...
    char comm[64];
}
** include/linux/sched.h#L207
#define TASK_COMM_LEN 16
** include/linux/sched.h#L1555
BUILD_BUG_ON(sizeof(buf) != TASK_COMM_LEN);

이를 깔끔하게 처리할 수 있는 방법이 있나요? prinfo의 comm의 크기를 16으로 수정해도 될까요?

발표자료 분량 제한

안녕하세요 조교님, Project 2에도 이전처럼 발표자료 분량 제한이 있나요?

감사합니다.

[proj1] Error handling에 대한 질문 / process 출력에 관한 질문

안녕하세요 조교님. 몇 가지 질문이 있습니다.

1. Ptree 출력은 swapper 부터인가요?

project1 pdf 문서의 example program output 부분에서는 ptree 출력시에 swapper부터 출력을 하고 있고, github의 project1 readme에서는 systemd와 kthread부터 출력을 하고 있습니다.

현재는 후자의 기준대로 구현을 하였는데 무엇이 맞는건가요?


2. Error handling 상황에서 return value는 무엇으로 해야하나요?

pdf 자료에서 에러 발생시(-EINVAL, -EFAULT)에는 errno와 perror로 에러 메세지를 출력하라고만 되어있고 리턴값은 무엇으로 해야하는지 설명이 안되어 있는데 이 상황에는 -1을 리턴해도 괜찮나요? 그게 아니라면 에러 상황시 리턴값은 무엇으로 해야하는지 궁금합니다.


3. Error handling 방법

perror() 함수의 경우 stdio.h에 포함되어있는데 커널에 이를 넣으면 빌드에 오류가 발생합니다. 에러 상황일 경우, 커널의 syscall_ptree()함수에서는 errno를 세팅만 하고 에러에 대한 출력(perror)는 유저 테스트 코드에서 하는 게 맞나요?


4. syscall ptree의 인자 중 nr로 음수가 들어가는 경우

nr이 음수가 되면 kmalloc 시에 바로 에러가 발생할 것 같은데 이와 같은 경우도 고려를 해야하나요?

채점 일정 공지 + 실습 과제 순서 변경 공지

(1) 과제 채점 결과 공지 일정은 다음과 같습니다.

  • Proj 1 and 2 => after mid term (대략 10월 말 ~ 11월 초 예정)
  • Proj 3 and 4 => after fin term

(2) 중간고사와 과제의 상대적인 난이도를 고려하여 과제 2의 듀가 변경되었습니다.
일정_최종

과제 딜레이 공지

여러 문제로 과제 진행이 지연된 팀은 메일로 연락주시길 바랍니다.
기존 듀 기준으로 1, 2, 3~5일 딜레이되었을 때 아래의 정책을 반영하여 점수 부여하도록 하겠습니다. (추후 과제에도 동일하게 적용됩니다.)

  • 1 day -10%
  • 2 days -15%
  • 3 ~ 5 days -50%

다만, 다음 과제 진행을 위해서 되도록이면 과제를 빨리 시작하시고, 딜레이 되더라도 2일 이내로 완료하시는 게 좋을 것 같습니다.

QEMU 사용법+Troubleshooting

(1) 실습자료의 qemu 사용방법 구체적으로 공지드립니다.

  1. Install QEMU: sudo apt-get install qemu (or sudo apt-get install qemu-system-aarch64)
  2. 링크의 스크립트와 config 파일을 다운로드.
  3. qemu.sh를 타이젠 커널 디렉터리 (ex. /home/dcslab/osfall2019-team1/)로 이동
  4. 타이젠 커널 디렉터리가 있는 곳(ex. /home/dcslab/)에 tizen-image 디렉터리 생성
  5. 다운로드 받은 것으로 기존 arch/arm64/configs/tizen_bcmrpi3_defconfig 파일 교체 (기존에 있던 파일은 백업해두기)
  6. 기존 스크립트 사용해서 커널 빌드 및 이미지 생성하여 boot.img, modules.img 파일 생성 후 tizen-image 디렉터리로 이동
  7. 커널 디렉터리의 tizen-unified_20181024.1_iot-headless-2parts-armv7l-rpi3.tar.gztizen-image 디렉터리로 압축 해제하여 나머지 img 파일 생성
    (ex) tar xvzf tizen-unified_20181024.1_iot-headless-2parts-armv7l-rpi3.tar.gz -C /home/dcslab/tizen-image
  8. qemu.sh 스크립트 실행 후 타이젠 쉘로 진입 완료

(참고) tizen-image 디렉터리를 만들지 않고 qemu.sh 스크립트의 img 파일 경로 (ex. file=../tizen-image/rootfs.img)를 해당 img 파일이 있는 경로로 직접 바꿔주셔도 됩니다.

(2) Troubleshooting

추가로, help doc에 언급했지만, 위 과정대로 진행해도 쉘로 진입하지 못하고 터미널에 아무것도 보이지 않을 수 있습니다. qemu의 스탠다드 콘솔출력 문제를 참고하여 진행하시길 바랍니다.

task_struct => prinfo Kernel Panic

task_struct에서 prinfo로 데이터를 옮기는 코드에서 커널 패닉이 발생하는 것 같습니다. 어떤 문제일 가능성이 있을까요?

read_lock, read_unlock 처리는 했습니다.

// 다른 코드 변화 없이 아래 줄이 있을땐 오류 발생, 없으면 오류가 발생하지 않음
p->state = ts->state;

Project 1, 2 점수 공개 (문의기간: ~ 11/22)

Project 1, 2 점수가 각 팀 repository의 issue board에 공개되었습니다.
점수에 관련하여 문의 사항이 있으신 경우 11월 22일까지 [email protected]로 문의 바랍니다.
채점 환경 및 기준은 아래와 같습니다.

  • 채점 환경: QEMU on server machine

  • Project 1: writing ptree system calls (45) + test your new system calls (10)
    *** 참고: 유저 메모리 접근 시 access_ok/get_user/copy_from_user/copy_to_user 사용을 권장합니다.

  • Project 2: wrr 구현 (60) + 평가 (10) + improvement (10)

    • implementing wrr (60)
      • wrr 구현; 시스템콜 (setweight 권한 제약 없을 시 2점 감점), API 등 구현/동작 여부
      • load balancer 구현; 스펙에 명시된 로직 만족 여부
    • investigate (10): 적절한 tester 구현/동작과 결과 제시 여부
    • improvement (10): readme 혹은 ppt 자료에 개선 방법 언급 여부
    • test case
      • 팀별 readme에 명시한 결과들 검증
      • 무한루프 혹은 tester 프로세스를 5~6개까지 띄워서 스케줄링/로드밸런싱 시 문제없는지 확인

우분투에서 크로스 컴파일 시 헤더 경로 설정 관련

안녕하세요,

우분투에서 Project1용 test 코드를 작성하고, arm-linux-gnueabi-gcc를 이용해 바이너리를 생성하려고 할 때, kernel 경로를 include 함에 있어 잘 모르겠는 게 있어 여쭤봅니다.
추가해야되는 kernel 경로가 repository의 include/에 있는 것(소스 그대로)일까요? 아니면, 새롭게 빌드된 커널 어딘가에 있는 헤더 파일들을 찾아야 하는 걸까요?

감사합니다.

list_entry 함수 질문

list_entry() 헷갈려서 질문드립니다.
list_entry(ptr, type, member)의 리턴값이 해당 type struct의 첫번째를 가리키는 포인터가 맞나요?
또 member값에는 ptr의 멤버명?이 들어가야 되는 건가요?

Project 2 디자인 리뷰 신청 공지 (신청기한: ~ 10/24 11 AM)

이번 주 목요일(10/24) project 2 디자인 리뷰 신청폼입니다.
팀원들과 함께 리뷰 참여 여부 및 시간을 상의해서 팀대표 한 분이 신청해주세요.
project 2의 디자인 방향 등을 미리 구상해보시고, 제약조건 등 질문할 것들을 생각해서 오시면 됩니다.
24일 오전 11시까지 받도록하겠습니다.

테스트 프로그램 컴파일 관련 질문입니다.

  1. 최상위 디렉토리에서 커널을 컴파일하고 부트 이미지를 만들었습니다.
  2. 같은 디렉토리에 test.c 파일을 작성했습니다.
#include <linux/syscalls.h>
int main(int argc, char *argv[]){
  return 0;
}
  1. 아래 명령어로 컴파일을 시도했습니다.
arm-linux-gnueabi-gcc -Iinclude test.c -o test

이때 아래와 같은 에러가 발생합니다.

In file included from include/linux/fs.h:5:0,
                 from /usr/arm-linux-gnueabi/include/linux/aio_abi.h:31,
                 from include/linux/syscalls.h:73,
                 from test.c:1:
include/linux/linkage.h:8:10: fatal error: asm/linkage.h: No such file or directory
 #include <asm/linkage.h>

arch/arm64/include 디렉토리를 추가로 넣어서 컴파일을 시도해 봤으나 여전히 다른 파일에서 문제가 발생합니다.

In file included from include/linux/spinlock.h:51:0,
                 from include/linux/wait.h:9,
                 from include/linux/wait_bit.h:8,
                 from include/linux/fs.h:6,
                 from /usr/arm-linux-gnueabi/include/linux/aio_abi.h:31,
                 from include/linux/syscalls.h:74,
                 from test.c:1:
include/linux/preempt.h:81:10: fatal error: asm/preempt.h: No such file or directory
 #include <asm/preempt.h>

테스트 프로그램을 작성할 때 test.c에서 어떤 파일을 include해야 하는지, 컴파일할 때 <your kernel path>에 어떤 것을 넣어야 하는지 모르겠습니다.

SMP 관련 질문드립니다.

안녕하세요 조교님. 두가지 질문이 있습니다. (QEMU 를 이용해서 작업중입니다)

Project2HelpDocument에 보면

Initially, it is very likely that only one core is active

이라고 되어 있는데, 저는 RPI를 부팅한 직후에도 항상 3~4개의 코어가 켜져 있는것 같습니다.(cat /proc/sched_debug 로 확인해 보면 코어마다 배정된 프로세스가 있습니다.) 이게 정상적인 상황이 아닌건가요?

RPI 에서 프로세스를 실행하면 cpu0~3 중 하나에 임의로 배정되던데요. 이게 제가 뭔가 잘못 건드려서 그런지, 아니면 원래 나눠서 배정되는 것인지 궁금합니다.

[proj2] cfs process의 starvation 문제

(1) 같은 CPU에서 커널 태스크(default cfs)와 wrr 태스크가 함께 수행될 때, 스케줄링 정책 우선순위에 의해 커널 태스크에 starvation이 발생할 수 있습니다.
이로 인해 전체 프로세스가 지연되는 경우 몇 분정도 기다리면 수행이 완료될 것입니다.
wrr 런큐 하나를 비우는 스펙의 목적이, wrr 때문에 다른 중요한 스레드 (커널 스레드 등)가 수행되지 못하는 상황을 최대한 막기 위함이었는데 조교들이 확인해보니 위와 같이 비우지 않은 다른 런큐들에 의해 여전히 문제가 발생하는 경우가 있었습니다.
그러니 위와 같은 문제에 대해서는 더 해결하지 않으셔도 됩니다. 채점할 때 고려할 예정입니다
대신 이에 대해 README에 문제가 있었던 테스트 케이스 등 간단히 언급만 해주시면 됩니다.

(2) 여러 wrr 프로세스를 동시에 돌려서 테스트할 때, 프로세스가 setscheduler 호출 이전에는 cfs라서 다른 wrr 프로세스 때문에 setscheduler조차 실행하지 못하고 무한히 기다리는 경우도 있습니다.
이 때는 한 프로그램 내에서 setscheduler 이후에 fork를 사용해서 process를 늘려보는 방법으로 테스트할 수 있습니다. 과제 스펙에 쓰여있듯 parent process가 wrr일 경우 child가 parent의 정책 및 weight을 그대로 따르도록 구현이 되면, fork를 쓰시면 처음부터 wrr policy로 시작하게 됩니다.

e2fsprogs 위치 관련 질문

안녕하세요 조교님.

project4 help document에 e2fsprogs/lib/ext2fs/ext2_fs.h에 있는 구조체 하나를 수정하라는 내용이 있는데 해당 path의 파일을 찾을 수가 없습니다. e2fsprogs라는 폴더가 어디에 있는 건지 알 수 있을까요?

[proj4 질문] fixed point, floating point

안녕하세요 조교님 위도, 경도 연산 시에 헷갈리는 점이 있어서 질문드립니다.
만약에

integer: -17, fraction: 100000
인 경우에 이것은 -17.1을 나타내나요 아니면 -16.9를 나타내나요?

test.c 파일 자체가 실행이 안됩니다..

test.c 를 컴파일하고 test 실행파일만 SD 카드에 올려서 실행해보려고 했는데 아예 test 파일 자체가실행이 되지 않는 것 같습니다.
혹시 예상되시는 이유?ㅠㅠ 가 있으실까요?ㅠㅠㅠㅠㅠ

run queue에 새로운 task enqueue 시에 관한 질문

안녕하세요.

help document에 따르면 새로운 task가 WRR run Q에 들어오면 tail에 insert를 하라고 되어있는데요,
만약에 test code에서 fork() 직후에 rt_rq에서 돌던 process task가 sched_setschedule()을 통해서 wrr_rq로 들어와서 돌게 되는 상황이라면, wrr_rq의 head에 삽입을 해야하나요 tail에 삽입을 해야하나요?

Project 2 Peer Review (~ 11/8)

Peer review를 위한 구글폼입니다. 11/8 (금)까지 제출해주세요.
과제 2 진행시점 기준으로 1~2인팀은 제출하지 않으셔도 됩니다.
미제출시 기본점수만 부여되니 팀 내에 제출하지 않은 팀원이 있는지 확인 부탁드립니다.

Peer review (~ 10/11 17시) + 기기 관련 공지

  • Peer review 10/11 금요일 17시까지 꼭 제출해주시고, (미제출시 기본점수만 부여되니 참고바랍니다. 팀 내에 제출안하신 팀원이 있는지 확인 부탁드립니다.)
  • 조교들이 기기정리를 할 예정이라, 키트 혹은 구성품 2개 이상 소지하고 계신 분들은 연구실로 반납해주시면 감사하겠습니다.

Interrupt가 들어왔을때 크래시가 나는 문제

[  110.965771] Unable to handle kernel paging request at virtual address 00003fc8
[  110.968799] Mem abort info:
[  110.969351]   Exception class = DABT (current EL), IL = 32 bits
[  110.969828]   SET = 0, FnV = 0
[  110.969988]   EA = 0, S1PTW = 0
[  110.970142] Data abort info:
[  110.970560]   ISV = 0, ISS = 0x00000006
[  110.970758]   CM = 0, WnR = 0
[  110.971357] user pgtable: 4k pages, 39-bit VAs, pgd = ffffffc06527e000
[  110.972077] [0000000000003fc8] *pgd=00000000a6761003, *pud=00000000a6761003, *pmd=0000000000000000
[  110.972846] Internal error: Oops: 96000006 [#1] PREEMPT SMP
[  110.973711] Modules linked in:
[  110.974527] CPU: 3 PID: 1034 Comm: sleep Not tainted 4.14.67-v8-qemu+ #74
[  110.974840] Hardware name: linux,dummy-virt (DT)
[  110.975749] task: ffffffc0650bd700 task.stack: ffffff800b0d8000
[  110.976622] PC is at cpuacct_charge+0x34/0xa8
[  110.977911] LR is at update_curr+0x98/0x228
[  110.978260] pc : [<ffffff80080ec54c>] lr : [<ffffff80080d5030>] pstate: a00001c5
[  110.978803] sp : ffffff800b0dba60
[  110.978985] x29: ffffff800b0dba60 x28: ffffffc06ffb0480 
[  110.979768] x27: ffffff80092aa7c0 x26: ffffffc06d57d780 
[  110.980104] x25: ffffff80092aa000 x24: 0000000000000008 
[  110.980295] x23: ffffffc06ffb0480 x22: 0000000001c8e1f0 
[  110.980460] x21: 0000000000000001 x20: 0000000001c8e1f0 
[  110.980858] x19: ffffffc0650b9d00 x18: 0000000000000000 
[  110.981157] x17: 0000000000000000 x16: ffffff8008111500 
[  110.981402] x15: 0000000000000000 x14: 00000000004bb6d4 
[  110.981611] x13: 00000000ff9cea5c x12: 0000000000000000 
[  110.981902] x11: 00000000ff9cea94 x10: 00000000004ce000 
[  110.982104] x9 : 000000000000075a x8 : 0000000000000400 
[  110.982268] x7 : 000000000000075a x6 : 0000000002739d7c 
[  110.982424] x5 : 00ffffffffffffff x4 : 0000000000000015 
[  110.983490] x3 : 0000000000000000 x2 : ffffffffff76abc0 
[  110.983734] x1 : 0000000000003ec0 x0 : 0000000000003ec0 
[  110.983940] Process sleep (pid: 1034, stack limit = 0xffffff800b0d8000)
[  110.984213] Call trace:
[  110.984388] Exception stack(0xffffff800b0db920 to 0xffffff800b0dba60)
[  110.984723] b920: 0000000000003ec0 0000000000003ec0 ffffffffff76abc0 0000000000000000
[  110.984970] b940: 0000000000000015 00ffffffffffffff 0000000002739d7c 000000000000075a
[  110.985185] b960: 0000000000000400 000000000000075a 00000000004ce000 00000000ff9cea94
[  110.985396] b980: 0000000000000000 00000000ff9cea5c 00000000004bb6d4 0000000000000000
[  110.985624] b9a0: ffffff8008111500 0000000000000000 0000000000000000 ffffffc0650b9d00
[  110.985878] b9c0: 0000000001c8e1f0 0000000000000001 0000000001c8e1f0 ffffffc06ffb0480
[  110.986092] b9e0: 0000000000000008 ffffff80092aa000 ffffffc06d57d780 ffffff80092aa7c0
[  110.986308] ba00: ffffffc06ffb0480 ffffff800b0dba60 ffffff80080d5030 ffffff800b0dba60
[  110.986528] ba20: ffffff80080ec54c 00000000a00001c5 0000000000000003 ffffffc06d553e00
[  110.986825] ba40: 0000007fffffffff ffffff80092a9b20 ffffff800b0dba60 ffffff80080ec54c
[  110.987497] [<ffffff80080ec54c>] cpuacct_charge+0x34/0xa8
[  110.987842] [<ffffff80080d5030>] update_curr+0x98/0x228
[  110.988085] [<ffffff80080d6108>] dequeue_task_fair+0x68/0x528
[  110.988251] [<ffffff80080ce440>] deactivate_task+0xa8/0xf0
[  110.988406] [<ffffff80080da9f4>] load_balance+0x454/0x960
[  110.988693] [<ffffff80080db2a4>] pick_next_task_fair+0x3a4/0x6c8
[  110.988987] [<ffffff8008b00bac>] __schedule+0x104/0x898
[  110.989226] [<ffffff8008b01374>] schedule+0x34/0x98
[  110.989459] [<ffffff8008b05084>] do_nanosleep+0x7c/0x168
[  110.989739] [<ffffff80081113f4>] hrtimer_nanosleep+0xa4/0x128
[  110.990058] [<ffffff8008111570>] compat_SyS_nanosleep+0x70/0x90
[  110.990300] Exception stack(0xffffff800b0dbec0 to 0xffffff800b0dc000)
[  110.990825] bec0: 00000000ff9cea6c 0000000000000000 00000000f7b82590 00000000ff9cea6c
[  110.991237] bee0: 0000000005f5e100 0000000000000000 00000000004b8e80 00000000000000a2
[  110.991768] bf00: 0000000000000000 0000000000000000 00000000004ce000 00000000ff9cea94
[  110.992084] bf20: 0000000000000000 00000000ff9cea5c 00000000004bb6d4 0000000000000000
[  110.992521] bf40: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
[  110.993118] bf60: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
[  110.993655] bf80: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
[  110.994227] bfa0: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
[  110.995517] bfc0: 00000000f7ab4a10 0000000060040010 00000000ff9cea6c 00000000000000a2
[  110.995998] bfe0: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
[  110.996235] [<ffffff8008083b18>] __sys_trace_return+0x0/0x4
[  110.996618] Code: 52800035 f9401260 8b010000 b4000080 (f9408400) 
[  110.997850] ---[ end trace cdf6df9c4e5b5c95 ]---
[  110.998316] note: sleep[1034] exited with preempt_count 2

안녕하세요.
테스트 프로그램 실행 중 위와 같이 hrtimer_nanosleep, hrtimer_wakeup, wait등의 interrupt가 들어오면 위와 같은 로그가 찍히면서 크래시가 납니다. 항상 fair scheduler의 클래스 함수를 거쳐서 간 뒤에 크래시가 나는데, fair.c는 수정한적이 없습니다. 원인을 좀처럼 알 수가 없는데, 어떤 부분을 고쳐야 되는지 알 수 있을까요?

맥에서 virtual box 사용하여 환경 구성하는 방법

  • 참고: https://github.com/hyojeonglee/osfall2019/blob/master/doc/SetupOnMac.md

  • Virtual box(우분투)에서는 커널 소스 빌드, 필요한 실행파일 카피 등 작업 진행.

    • 이 때, SD카드를 virtual box를 위해 따로 다시 마운트 해주어야합니다. (위 docs에 링크가 있습니다.)
  • 맥북 터미널에서는 screen 명령어로 보드와 시리얼 통신해서 과제에 대한 테스트 작업 진행

    1. 이때, /dev/tty.usbXXX가 없을 경우 USB to serial 드라이버를 설치해야합니다.(https://plugable.com/2011/07/12/installing-a-usb-serial-adapter-on-mac-os-x/)
    2. 보드 전원선은 빼둔 상태에서 시리얼 케이블 및 플래싱되어있는 sd카드 꽂고 screen /dev/tty.usbXXX 115200 명령어 입력.
    3. 보드 전원 꼽고 부팅 확인 및 로그인 (root/tizen)

booting sd card 만드는 중 오류

과제를 진행하던 중 잘 돌아가던 테스트 프로그램이 단순한 프린트도 출력하지 못하게 되어 디버깅 중입니다.

부팅 sd카드 만드는 과정에 문제가 있을까 싶어 메세지를 읽어보니 오류 메세지들이 나타납니다.

아래 메세지 정상인가요? 아니라면 어떻게 해결해야 할까요?

1570271983791

selector, trial 프로그램이 잡는 lock 질문

안녕하세요 조교님,

Project3 spec document에 보면 아래처럼 selector와 trial이 잡는 lock에 대해 설명되어 있습니다.

selector: A program accepts a starting integer as the only argument. When running, first, your program must take the write lock for when the device is positioned at 0 <= degree <= 180.

trial: A program accepts an integer identifier as the only argument. This program will acquire a read lock when the device is in a certain rotation ([0, 180]).

그런데 기기가 [0, 180] 범위에 있을 때 lock을 잡는다고만 되어 있지, 정확히 어떤 범위의 lock을 잡는 것인지 잘 이해가 안 가서 질문드립니다.

lock의 중첩/다중 호출 관련

한 thread가, 이미 한 range의 lock을 잡은 상태로
(그와 겹치지 않는) 다른 range의 lock을 잡으려고 시도하는 경우가 가능하다고 생각하고 고려해야 하나요?

[11.6 updated] 중간고사 성적 공지 (문의기간: 11/4 ~ 11/7로 연장)

중간고사 점수가 etl 개인 성적부에 공개되었습니다.
총점 70점이며 결과는 아래와 같습니다.

  • 평균: 49.07
  • Q1: 40.25
  • Q2: 52.5
  • Q3: 61

성적에 대한 문의는 이번 주 목요일(11/7)까지 받을 예정입니다.
문의 기간 내 오후 1~2시 사이에 시험지 확인이 가능하니 미리 메일 주시고 연구실 (302동 319호)로 오시면 됩니다.

README질문입니다.

조교님 안녕하세요, team 7 유진선입니다.
다름이 아니라, README 항목 중 "Investigation of Process Tree"라고 된 부분이 있는데,
이부분이 정확히 무엇을 가리키는지 궁금합니다.

Process Tree를 탐색한 결과를 말하는 것인지, 아니면 Proces Tree를 탐색하는 과정을 설명하는 것인지, 후자라면 "High level design and implementation"과 어떻게 다른지 궁금합니다.

감사합니다!

Project 3 Peer Review (~ 11/29)

Peer review를 위한 구글폼입니다. 11/29 (금)까지 제출해주세요.
과제 3 진행시점 기준으로 1~2인팀은 제출하지 않으셔도 됩니다.
미제출시 기본점수만 부여되니 팀 내에 제출하지 않은 팀원이 있는지 확인 부탁드립니다.

qemu 실행시 메세지 보이지 않는 문제

조교님,

커널 코드에 문제가 있으면 qemu 및 rasberry-pi boot자체가 안될 수 있나요?
과제 2 코드를 qemu/rasberry-pi로 실행시키면 아무 메세지도 출력되지 않습니다.
과제 1 코드는 qemu/rasberry-pi로 잘 실행되기 때문에 실행 과정이나 환경의 문제는 아닌 것으로 보입니다.
kernel 코드에 문제가 있어도 boot는 되어야 하는 것으로 알고 있었는데,
kernel 코드가 잘못되면 boot 자체가 안될수도 있나요?

커널 컴파일 중 clock skewed error.

./build- 로 컴파일하다가 어느순간 clock skewed error라는 워닝?에러?가 뜨는데,
시스템 시간과 소스파일 시간이 맞지 않기 떄문에 발생한다고 뜨네요..?
컴파일이 안되는 건 아닌거 같긴 한데;
인터넷으로 찾은 자료로 해결하려고 하니 해결이 제대로 되지 않아서요;
그냥 무시해도 되나요?
아래는 제가 참고한 자료입니다.
https://knoow.tistory.com/134

[개발 환경 설정] screen으로 rasberry-pi 접속후 로그인 시 검정 화면 현상

개발 환경 설정 관련 질문입니다.

serial2usb로 rasberry-pi와 laptop을 연결하고 sudo screen /dev/ttyUSB0 115200 으로 접속하면 타이젠 부팅이 시작되는 것을 볼 수 있습니다.

그런데 로그인을 위해 ctrl+alt+f2를 입력하면 검정색 화면이 나타나면서 어떤 키도 입력되지 않습니다.

어떻게 하면 좋을까요?

[proj4 질문] proj4.fs 마운트 에러

안녕하세요 조교님.
스크린샷 2019-12-16 오전 1 11 45
위의 스크린샷과 같이 proj4.fs 파일을 qemu에서 mount 시키려고 하면 failed to setup loop device라는 에러가 뜨는데 혹시 뭐가 문제일까요?

아래 스크린샷은 qemu 실행 직전 $ lsblk 출력 결과입니다.
스크린샷 2019-12-16 오전 2 23 36

아래 스크린샷은 qemu 상에서 $ lsblk 실행 모습입니다.

스크린샷 2019-12-16 오전 2 27 02

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.