xv6

xv6 구현에서 grep이 작동합니까?
xv6

xv6 구현에서 grep이 작동합니까?

char buf[1024]; void grep(char *pattern, int fd) { int n, m; char *p, *q; m = 0; while((n = read(fd, buf+m, sizeof(buf)-m-1)) > 0){ m += n; buf[m] = '\0'; p = buf; while((q = strchr(p, '\n')) != 0){ *q = 0; if(match(pattern, p)){ *q ...

Admin

사용자 프로세스가 커널 주소 공간에서 메모리를 읽을 수 없는 이유는 무엇입니까?
xv6

사용자 프로세스가 커널 주소 공간에서 메모리를 읽을 수 없는 이유는 무엇입니까?

사용자 프로세스가 커널 주소 공간에 데이터를 쓰거나 수정할 수 없는 이유는 상당히 분명해 보입니다. 하지만 왜 그들이 데이터를 읽을 수 없는지 이해가 되지 않습니다. 이 경우 분할 함정이 있다는 것을 알고 있는데, 그 이유는 무엇입니까? 사용자 프로세스가 커널 주소 공간의 데이터만 읽을 수 있다면 어떤 문제가 발생합니까? 미리 감사드립니다 ...

Admin

shell/init는 어떻게 stdio 스트림을 생성합니까?
xv6

shell/init는 어떻게 stdio 스트림을 생성합니까?

MIT 소스를 읽고 있어요xv6 운영 체제. 클립은 다음의 시작 부분에 나타납니다 sh.c. // Ensure that three file descriptors are open. while((fd = open("console", O_RDWR)) >= 0){ if(fd >= 3){ close(fd); break; } } 나는 이것이 다음과 같은지 확인한다는 것을 안다.적어도새로 할당된 파일 설명자가 3보다 높은지(또는 동일한지) 확인하여 3개의 파일 ...

Admin

기본 파일 설명자를 위한 open() 콘솔
xv6

기본 파일 설명자를 위한 open() 콘솔

저는 C의 쉘 프로그램 구현에 대해 읽고 있습니다(MIT 6.828 운영 체제 엔지니어링 과정의 xv6 쉘). 셸의 기능은 main()다음 코드로 시작됩니다. //Assumes three file descriptors open while((fd = open("console", O_RDWR)) >= 0){ if(fd >= 3){ close(fd) break; } } 다음은 위의 코드를 설명하는 xv6 책의 인용문입니다. "셸은 콘솔의 ...

Admin

긴 이야기 짧게
xv6

긴 이야기 짧게

배경: 가상화를 위해 QEMU를 사용하고 있습니다.xv6-riscvWSL2 위에 있습니다. 저는 Linux 명령을 연상시키는 일종의 깔끔한 운영 체제 종료 프로세스를 만들려고 합니다 exit. 현재 나는 qemu를 종료하기 위해 Ctrl-를 사용하고 있지만 a x운영 체제 내에서 프로그래밍 방식으로 이 작업을 수행할 수 있기를 바랍니다. 나는 Linux exit명령이 현재 쉘을 닫는다는 것을 알고 있습니다. 즉, 활성 쉘이 남아 있는지 감지하는 커널 공간 방법과 QEMU가 닫히고 있음을 알리는 방법이...

Admin

파일 설명자와 프로세스 테이블 간의 관계는 무엇입니까?
xv6

파일 설명자와 프로세스 테이블 간의 관계는 무엇입니까?

나는 운영체제에 관심이 있다. 그래서 운영체제에 대해 배우기 위해 xv6 책을 읽고 있어요. 이 주제에 관한 나의 첫 번째 책입니다. 이해할 수 없는 한 줄을 읽었습니다. 내부적으로 xv6 커널은 파일 설명자를 각 프로세스 테이블에 대한 인덱스로 사용하므로 각 프로세스는 0부터 시작하는 파일 설명자의 전용 공간을 갖습니다. 파일 설명자는 쓰거나 읽을 수 있는 데이터 스트림을 나타낸다고 생각합니다. 프로세스 테이블과 어떤 관련이 있습니까? 파일 설명자 테이블은 열린 파일 리소스를 나타내는 프...

Admin