일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 현장실습
- aws ec2
- Java
- 프로그래머스
- 위키 탭
- 현장실습 IT
- 잘하고싶다..
- 정렬 기준
- 셀레니움
- 숭실대
- nurigo
- 스프링 회원가입 인증
- Executors
- 개발자 디자인
- 자바
- 문자 인증
- 사이드 프로젝트
- excalidraw
- DNS동작원리
- 인턴
- Spring
- REST
- NAVER D2
- 스터디 관리
- OpenAI
- 값 객체
- 스프링
- 스트림
- ssh
- 위키 꾸미기
- Today
- Total
목록Operating System (6)
뭐요
예제로 알아보는 xv6에서 시스템 호출 구현하기 1편 바로가기 시스템 호출 구현 지난 시간에 이어 xv6에서 시스템 호출을 구현해보자. 추적할 시스템 콜을 지정하는 정수 [mask]를 인자로 받아 리턴될 때 프로세스 아이디, 시스템 콜 이름, 리턴 값이 출력되는 시스템호출을 구현해보려고 한다. 우리의 목표 trace 시스템 콜 추가 및 호출하는 쉘 프로그램 구현 trace 시스템호출 구현 추적할 시스템 콜을 지정하는 정수 [mask]를 인자로 받아 리턴될 때 프로세스 아이디, 시스템 콜 이름, 리턴 값이 출력되는 시스템호출을 구현해보자. 1) proc.h에서 struct proc에 int형 tracemask 변수 추가 // Per-process state struct proc { uint sz; // S..
예제로 알아보는 xv6에서 시스템 호출 구현하기 시스템 호출 구현 xv6에서 시스템 호출을 구현해보자. 직접 시스템 호출을 통해 호출한 프로세스의 메모리 사용량을 출력하는 memsize()를 구현해보려고 한다. 우리의 목표 memsize() 시스템 콜 추가 및 호출하는 쉘 프로그램 구현 들어가기 전에 기본 개념 새로운 시스템 호출을 구현하기 위해서, 기존에 있는 시스템 호출이 어떻게 구현되어 있는 지 확인하고 그대로 따라할 예정이다. 시스템 호출 종류는 다음과 같다. 인자가 없는 시스템 호출 EX) sysproc.c 내 구현된 uptime() 문자열 및 정수 인자가 있는 시스템 호출 EX) sysfile.c 내 구현된 open() 구조체 인자가 있는 시스템 호출 EX) fstat() 새롭게 만들 시스템 ..
xv6에서 로그인 구현 로그인 구현 xv6에서 init.c를 수정하여 아이디, 비밀번호를 입력할 수 있도록 로그인 구현하기 우리의 목표 부팅 시 Username : root, Password : 1234를 입력하여 로그인 구현 list.txt 파일을 읽어 입력 받은 값이 해당 파일에 존재하는 지 확인하여 로그인 가능 여부 체크 list.txt 파일은 Username, Password 형식으로 구성 로그인 가능하면 ssu_login에서 shell 프로그램을 fork-exec으로 호출 1) list.txt를 추가 $ cat list.txt root 1234 user 3456 2) init.c에서 바로 shell 프로그램 실행시키는 것이 아닌 ssu_login 실행시키도록 변경 // init.c for(;;)..
xv6에서 hcat 쉘 프로그램 작성 hcat 쉘 프로그램 작성 xv6에서 기존에 쓰여져있는 cat 명령어를 참고해서 특정 행을 출력하는 hcat 쉘프로그램을 만들어보자 우리의 목표 파일의 첫 번째 행을 터미널에 출력하는 hcat.c 프로그램 작성 기존에 cat.c 파일 복사 출력할 행 수를 저장할 전역변수 추가 void cat(int fd) 함수 부분 수정 helloworld 과제 처럼 Makefile 수정해서 hcat.c 또한 컴파일 될 수 있도록 변경 xv6 실행 후 hcat 명령어 실행 1) cat.c의 소스코드를 복사해서 hcat.c 파일을 만든 후에 붙여넣기 2) char buf[1]를 size 1로 바꿈. char buf[1]; 3) 전역변수 cntLine 선언 int endLine; 4) ..
xv6에서 helloworld 쉘 프로그램 작성 helloworld 쉘 프로그램 작성 xv6에서 “Hello World XV6”를 출력하는 프로그램을 만들어보자. 우리의 목표 “Hello World XV6”를 출력하는 프로그램 작성 Makefile을 수정하여 helloworld.c 파일도 make 시 컴파일 되도록 변경 xv6 실행 후 helloworld 명령어 실행 1) xv6 디렉토리 내에 helloworld.c 파일 작성 #include "types.h" #include "stat.h" #include "user.h" int main(int argc, char **argv){ printf(1, "Hello World XV6\\n"); exit(); } 2) Makefile에서 UPROGS 부분 수정..

배경 m1 맥 사용하고 있으며, 우분투 환경에서 xv6를 설치했다. 이후, xv6 컴파일 및 실행을 위하여 $ make $ make qemu-nox 명령어를 입력하니 이런 에러가 떴다. 에러 메세지 usertests.c: In function ‘sbrktest’: usertests.c:1461:13: error: writing 1 byte into a region of size 0 [-Werror=stringop-overflow=] 1461 | *lastaddr = 99; | ~~~~~~~~~~^~~~ cc1: all warnings being treated as errors make: *** [: usertests.o] Error 1 추측 원인 에러가 나는 코드가 일반적으로 버그를 유발하는 코드라 경고..