当前位置: 首页 > wzjs >正文

滴滴优惠券网站怎么做的网站及新媒体建设办法

滴滴优惠券网站怎么做的,网站及新媒体建设办法,海外网站空间,4399电脑版网页在线玩接上文 MIT XV6 - 1.1 Lab: Xv6 and Unix utilities - user/_sleep 是什么?做什么? pingpong 不务正业了那么久(然而并没有,虽然还在探索sleep,但是教材我已经看完了前三章了),让我们赶紧继续下去 在进行本实验之前请务…

接上文 MIT XV6 - 1.1 Lab: Xv6 and Unix utilities - user/_sleep 是什么?做什么?

pingpong

不务正业了那么久(然而并没有,虽然还在探索sleep,但是教材我已经看完了前三章了),让我们赶紧继续下去

在进行本实验之前请务必阅读完教材 Chapter 1,尤其是1.3对于PIPE的介绍,实验具体要求如下:

Write a user-level program that uses xv6 system calls to ‘‘ping-pong’’ a byte between two processes over a pair of pipes, one for each direction. The parent should send a byte to the child; the child should print “pid: received ping”, where pid is its process ID, write the byte on the pipe to the parent, and exit; the parent should read the byte from the child, print “pid: received pong”, and exit. Your solution should be in the file user/pingpong.c.

Some hints:

  • Add the program to UPROGS in Makefile.
  • Use pipe to create a pipe.
  • Use fork to create a child.
  • Use read to read from a pipe, and write to write to a pipe.
  • Use getpid to find the process ID of the calling process.
  • User programs on xv6 have a limited set of library functions available to them. You can see the list in user/user.h; the source (other than for system calls) is in user/ulib.c, user/printf.c, and user/umalloc.c.

Run the program from the xv6 shell and it should produce the following output:

make qemu
...
init: start sh
$ pingpong
4: received ping
3: received pong
$

整体还是比较简单的,主要你得理解forkpipe的用法,以及一些要点,比如fork的返回值如果是子进程,那么会返回0;read会一直等到有足够的输入或者文件描述符被关闭啊。这些都在课本中有描述。

以下是实验源码(这注释,不用想,一定是AI写的…) GitHub已经同步

/** pingpong.c - A simple program demonstrating inter-process communication using pipes* * This program creates a parent-child process pair that communicate through a pipe.* The parent sends a "ping" message to the child, and the child responds with a "pong".* * Communication Flow:* 1. Parent creates a pipe* 2. Parent forks a child process* 3. Both processes have access to the pipe's read and write ends* 4. Parent writes "p" to pipe and waits for response* 5. Child reads "p" from pipe, prints "received ping", and writes "p" back* 6. Parent reads "p" from pipe and prints "received pong"* * Timing Diagram:* * Parent Process          Child Process*     |                       |*     |--pipe creation------>|*     |                       |*     |--fork()------------->|*     |                       |*     |--write("p")--------->|*     |                       |*     |<--read("p")----------|*     |                       |*     |<--write("p")---------|*     |                       |*     |--read("p")---------->|*     |                       |*     |--wait()------------->|*     |                       |*     |<--exit()-------------|*     |                       |*/#include "kernel/types.h"  // Include kernel type definitions
#include "user/user.h"     // Include user-level system call definitionsint main(int argc, char *argv[]) {int p[2];                // Array to store pipe file descriptorspipe(p);                 // Create a pipe, p[0] for reading, p[1] for writingchar buf[1];            // Buffer to store single character messagesif (fork() == 0) {      // Child processread(p[0], buf, 1);   // Read "p" from parentprintf("%d: received ping\n", getpid());  // Print child's PID and messagewrite(p[1], "p", 1);  // Send "p" back to parentclose(p[0]);          // Close read endclose(p[1]);          // Close write endexit(0);              // Exit child process} else {                // Parent processwrite(p[1], "p", 1);  // Send "p" to childread(p[0], buf, 1);   // Wait for child's responseprintf("%d: received pong\n", getpid());  // Print parent's PID and messagewait(0);              // Wait for child to exitclose(p[0]);          // Close read endclose(p[1]);          // Close write endexit(0);              // Exit parent process}return 0;
}

实验结果

make qemu
qemu-system-riscv64 -machine virt -bios none -kernel kernel/kernel -m 128M -smp 3 -nographic -global virtio-mmio.force-legacy=false -drive file=fs.img,if=none,format=raw,id=x0 -device virtio-blk-device,drive=x0,bus=virtio-mmio-bus.0xv6 kernel is bootinghart 1 starting
hart 2 starting
init: starting sh
$ pingpong
4: received ping
3: received pong
$ QEMU: Terminated

ut结果

./grade-lab-util pingpong
make: `kernel/kernel' is up to date.
== Test pingpong == pingpong: OK (1.1s) 

我觉得得找时间看看他ut都做了什么。

http://www.dtcms.com/wzjs/551073.html

相关文章:

  • 建设企业网站方法域名注册网站建设
  • 优秀平面设计网站wordpress国内服务器慢
  • 用dw做淘客网站的步骤益阳网络推广
  • 河北省建设厅网站手机版宝安中心医院入职体检
  • 怎样做网商网站旅游交友的网站建设
  • 品牌网站设计制作哪家正规大连城乡建设局官网
  • 手游网站做cpc还是cpm广告号网页设计作品欣赏网站
  • 东营长安网站建设国外平面设计欣赏网站
  • 网站建设kaicz郑州网站模板哪里有
  • 哪个设计网站赚钱盐城网站建设培训学校
  • 谁做的怀来吧网站美术主题资源网站建设
  • 查询网站备案密码双11各大电商平台销售数据
  • 做网站互联互通王也高清头像图片
  • 什么网站可以做pie chart如何用python做一个网站
  • 宜宾团购网站建设wordpress安卓 图片大小
  • 搭建企业网站需要什么工作准备区域的组成包括
  • WordPress文章图片采集插件wordpress插件dx seo下载
  • 智慧旅游网站建设方案ppt微信营销的10种方法技巧
  • 网站和新媒体建设管理大芬地铁站附近做网站
  • app公司网站建设做电影网站视频放在那里
  • phpcms网站模板下载成都网站设计制作价格
  • 个人备案可以做哪些网站网站整合建设是啥意思
  • 大连建设科技网站童装店网页设计素材
  • 承德做网站优化深圳网站建设系统
  • 如何推广个人网站广州公司注册核名网址
  • 网站开发时如何设计英文版本服装网站功能
  • 长沙网站快速排名提升站长工具seo综合查询论坛
  • 新手引导做的差的网站建设网站 (公司)
  • 电子工程建设网安卓排名优化
  • 商业网站域名后缀原创作文网