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

有服务器怎么做网站seo综合查询

有服务器怎么做网站,seo综合查询,武汉城乡住房建设网站,普通网站制作目录 一、实验内容二、实验过程2.1 已有的代码2.2 需补充内容/kernel/kalloc.c修改(剩余内存计算的函数)/kernel/proc.c修改(统计进程数量的函数)/kernel/defs.h修改添加/kernel/sysinfo.c文件/kernel/syscall.h修改/kernel/sysca…

目录

  • 一、实验内容
  • 二、实验过程
    • 2.1 已有的代码
    • 2.2 需补充内容
      • /kernel/kalloc.c修改(剩余内存计算的函数)
      • /kernel/proc.c修改(统计进程数量的函数)
      • /kernel/defs.h修改
      • 添加/kernel/sysinfo.c文件
      • /kernel/syscall.h修改
      • /kernel/syscall.c修改
      • /user/user.h修改
      • /user/usys.pl修改
      • Makefile修改(编译)
  • 三、测试结果

一、实验内容

  • 添加一个系统调用sysinfo用以收集系统运行时的信息
  • sysinfo只用一个参数(struct sysinfo),详见kernel/sysinfo.h
  • 使用内核填充struct sysinfo
  • 提供了sysinfotest用以测试效果,通过会输出sysinfotest: OK

二、实验过程

2.1 已有的代码

  • sysinfotest.c文件部分内容
// 主函数
144 int
145 main(int argc, char *argv[])
146 {
147   printf("sysinfotest: start\n");
148   testcall();
149   testmem();
150   testproc();
151   printf("sysinfotest: OK\n");
152   exit(0);
153 }//testcall()78 void79 testcall() {80   struct sysinfo info;8182   if (sysinfo(&info) < 0) {83     printf("FAIL: sysinfo failed\n");84     exit(1);85   }8687   if (sysinfo((struct sysinfo *) 0xeaeb0b5b00002f5e) !=  0xffffffffffffffff) {88     printf("FAIL: sysinfo succeeded with bad argument\n");89     exit(1);90   }91 }

此文件主要处理struct sysinfo结构体记录的信息,sysinfo的信息由内核进行记录,因此要进行系统调用操作。
在kernel文件中,官方提供了sysinfo.h,未提供sysinfo.c,需要自行编写。

//sysinfo.h
1 struct sysinfo {
2   uint64 freemem;   // amount of free memory (bytes)
3   uint64 nproc;     // number of process
4 };

sysinfo.c需要完成将运行中的系统信息写入sysinfo结构体中,此结构体为内核态结构体,最后还需传递到用户态。
按照官方提示,在kernel/kalloc.c中添加一个函数用以收集剩余内存;在kernel/proc.c中添加函数用以收集进程数量。

2.2 需补充内容

/kernel/kalloc.c修改(剩余内存计算的函数)

 // kernel/kalloc.c86 uint6487 kcollect_free(void)88 {89   acquire(&kmem.lock);9091   uint64 free_bytes = 0;92   struct run *r = kmem.freelist;93   while(r){94     free_bytes += PGSIZE;95     r = r->next;96   }9798   release(&kmem.lock);99   return free_bytes;
100 }

/kernel/proc.c修改(统计进程数量的函数)

在proc.c文件中添加统计进程数量的函数,通过遍历proc[]数组实现

690 // kernel/proc.c
691 int
692 collect_proc_num(void)
693 {
694   int num = 0;
695   struct proc *p;
696   for(p = proc; p < &proc[NPROC]; p++){
697     if(p->state != UNUSED)
698       num++;
699   }
700   return num;
701 } 

/kernel/defs.h修改

要将上述定义的两个函数添加进defs.h中,在/kernel中,内核函数调用defs.h查询需要用的内核函数

11 struct sysinfo;67 uint64     kcollect_free(void);111 int       collect_proc_num(void);

添加/kernel/sysinfo.c文件

  1 // kernel/sysinfo.c2 #include "types.h"3 #include "riscv.h"4 #include "defs.h"5 #include "param.h"6 #include "memlayout.h"7 #include "spinlock.h"8 #include "proc.h"9 #include "sysinfo.h"1011 uint6412 sys_sysinfo(void)13 {14     struct proc *p = myproc();1516     struct sysinfo info;17     uint64 info_addr; // user pointer to struct stat18     argaddr(0, &info_addr);1920     info.freemem = kcollect_free();21     info.nproc = collect_proc_num();2223     // 将struct sysinfo拷贝至用户态24     if(copyout(p->pagetable, info_addr, (char*)&info, sizeof(info)) < 0){25         return -1;26     }27     return 0;28 }

/kernel/syscall.h修改

增加系统调用号

 23 #define SYS_sysinfo 22

/kernel/syscall.c修改

在相应位置增加转换定义

105 extern uint64 sys_sysinfo(void);
131 [SYS_sysinfo]  sys_sysinfo,

/user/user.h修改

增加函数声明

 26 int sysinfo(struct sysinfo *);

/user/usys.pl修改

增加系统调用入口,usys.pl编译后产生usys.S文件,该文件记录了内核函数的入口

 39 entry("sysinfo");

Makefile修改(编译)

在相应位置添加链接和编译内容

//链接
23   $K/sysinfo.o\
//编译
192  $U/_sysinfotest\

三、测试结果

使用测试工具测试

root@QQQ:~/xv6-labs-2023# make GRADEFLAGS=sysinfo grade

输出结果OK

rnel/syscall.o kernel/sysproc.o kernel/sysinfo.o kernel/bio.o kernel/fs.o kernel/log.o kernel/sleeplock.o kernel/file.o kernel/pipe.o kernel/exec.o kernel/sysfile.o kernel/kernelvec.o kernel/plic.o kernel/virtio_disk.o kernel/start.o kernel/console.o kernel/printf.o kernel/uart.o kernel/spinlock.o
riscv64-unknown-elf-objdump -S kernel/kernel > kernel/kernel.asm
riscv64-unknown-elf-objdump -t kernel/kernel | sed '1,/SYMBOL TABLE/d; s/ .* / /; /^$/d' > kernel/kernel.sym
make[1]: Leaving directory '/root/xv6-labs-2023'
== Test sysinfotest == sysinfotest: OK (5.5s)
root@QQQ:~/xv6-labs-2023#
http://www.sczhlp.com/news/28455/

相关文章:

  • 柳市做网站百度链接收录提交入口
  • 怎么自己在百度上做网站app推广方式
  • 广东省 政府网站 建设方案杭州seo招聘
  • 网站首页的提交怎么做怎么看百度指数
  • 二道网站建设微信公众号推广2元一个
  • 数据结构与算法完全指南:从基础到实战应用
  • 装修做劳务去哪个网站找工地安卓优化大师破解版
  • 网站引导页利弊最近新闻有哪些
  • 深圳网站设计是什么河南网站优化公司
  • 网站建设策划书3000字深圳外贸网站建设
  • 网站的商桥怎么做seo新方法
  • 反思
  • 不看后悔!GitHub 开源 MultiTalk .8k star 强大的人语音+图像绑定项目
  • 行业平台网站开发山东公司网站推广优化
  • 结构设计在哪个网站接单兼职做线上广告
  • 做网站的怎么认证微博百度seo优化规则
  • 苏州网站建设营销推广南昌百度网站快速排名
  • 建站系统社区网站建设费用明细表
  • 做室内3d设计的网站企业培训课程安排表
  • 怎样将qq空间建设为个人网站腾讯企业qq
  • GitHub超 30000+ star 背后,这款 Supervision 工具为何让视觉开发者欲罢不能?
  • 广州做网站一般多少钱新媒体运营培训学校
  • 网站上的图用美图秀秀做可以吗网页制作软件推荐
  • 关于电子商务网站建设的现状百度不让访问危险网站怎么办
  • 苏州网联盛网站建设惠州网站排名提升
  • 小程序ui设计模板seo优化招商
  • 网站建设与推广方案推广赚钱项目
  • 广州专业的做网站公司百度获客
  • 做美工需要参考的网站优化措施最新回应
  • 如何自己做外贸网站站长推荐产品