代码拉取完成,页面将自动刷新
pkzd: 一个类unix操作系统的简单实现, 由unix v6改写而成 注: 系统的名字取自游戏pokemon和zelda(注意是pkzd不是pmzd哦) 系统简介: pkzd是一个根据unix v6改写的简单的请求调页的类unix操作系统, 系统的设计力求简洁, 所以很多设计非常简陋. 模拟机: 系统镜像pkzd.img可以在bochs, qemu和virtualbox中运行(virtualbox中的格式为hdd并口硬盘, 只要把pkzd.img改成pkzd.hdd就行了) 硬件支持: x86架构 系统追求简单只支持键盘, 显示屏和IDE硬盘 系统调用: pkzd支持以下的系统调用: pid_t fork(void); int execve(char *filename, char **argv, char **envp); int exit(int status); pid_t wait(int *status); pid_t getpid(void); pid_t getppid(void); uid_t getuid(void); uid_t geteuid(void); gid_t getgid(void); gid_t getegid(void); int setpgid(void); 该函数为system v版, 在调用此系统调用时父进程应该保证没有子进程存在 int brk(uint addr); int creat(const char *pathname, mode_t mode); int open(const char *pathname, int flags, mode_t mode); int close(int fd); int dup(int fd); int read(int fd, char *buf, size_t cnt); int write(int fd, const char *buf, size_t cnt); off_t lseek(int fd, off_t offset, int whence); int mknod(const char *pathname, mode_t mode, dev_t dev); int access(const char *pathname, mode_t mode); int link(const char *oldpath, const char *newpath); int unlink(const char *path); int mkdir(const char *pathname, mode_t mode); int rmdir(const char *pathname); int chdir(char *pathname); int stat(const char *pathname, struct stat *stbuf); int fstat(int fs, struct stat *stbuf); 命令: 为了节省时间, 我并没有编写太多的命令, 目前只实现了以下命令 ls ls命令只支持参数-aclu date chdir cat 文件系统: pkzd所使用的是一个简单的基于inode的文件系统 fs目录下有一个最简单的支持文件的命令子集 mkfs命令: mkfs device swapsize inodenumber 初始化一个虚拟磁盘, device为虚拟磁盘(pkzd.img), swapsize为交换空间的块数(至少1024), inodenumber为inode的数目(至少100) ls命令: ls device directory 列出虚拟磁盘device指定目录directory下的所有文件, directory必须为绝对路径 rm命令: rm device pathname 删除虚拟磁盘device的指定文件pathname, pathname必须为绝对路径, pathname可以是文件, 特殊文件或者空目录 cat命令: cat device pathname 显示虚拟磁盘device的指定文件pathname, pathname必须为绝对路径, pathname可以是文件或特殊文件 link命令: ./link device dest source 在虚拟磁盘中创建source的硬链接dest, dest和source必须为绝对路径 mknod命令: ./mknod device pathname mode dev 在虚拟磁盘中创建一个特殊文件pathname, pathname必须为绝对路径, dev为设备号 mode为linux结构struct stbuf中的st_mode的值的十进制 比如16895代表目录, 8630代表字符设备, 33279代表为普通文件 add命令: add device dest source mode 复制linux中的普通文件source(unix/linux中的路径名)到虚拟磁盘的dest(虚拟磁盘中绝对路径)中, mode的值同mknod命令中的mode 虚拟磁盘: 虚拟磁盘必须包含内核文件/pkzd, /init, 字符设备/dev/tty(设备号必须为0), 目录/bin(所有的命令都在该目录下) 信号: 系统的信号只存在两种情况, 终止或者忽略 时间: 时间是北京时间, 其他的时区无法正确的显示时间.我不知道如何从硬件获取正确的时区信息, 如果你知道请告知我. 最后感谢吾的挚友顾靖业帮我将此文翻译成英文
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。