![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux操作系统
victorika
这个作者很懒,什么都没留下…
展开
-
CS:APP malloc lab 记录
Introduction在本lab中,您将为C程序编写一个动态存储分配器,即您自己的malloc,free和realloc例程版本。 鼓励您创造性地探索设计空间并实现正确,高效和快速的分配器。 How to Work on the Lab您的动态存储分配器将包含以下四个函数,这些函数在mm.h中声明,并在mm.c中定义。我们为您提供的mm.c文件实现了我们可以想到的最简单但仍在功能上正确的malloc程序包。 以此为起点,修改这些函数(并可能定义其他私有静态函数),以使它们遵循...原创 2020-08-10 19:19:46 · 2263 阅读 · 0 评论 -
CS:APP shell lab 记录
Introduction任务目的是使您更加熟悉过程控制和信号通知的概念。 为此,您需要编写一个简单的Unix Shell程序来支持作业控制。Hand Out Instructions首先将文件shlab-handout.tar复制到计划在其中进行保护的受保护目录(实验室目录)。 然后执行以下操作:1.输入命令tar xvf shlab-handout.tar展开tarfile。2.输入命令make进行编译并链接一些测试例程查看tsh.c(tiny shell)文件,您将看..原创 2020-07-26 20:08:52 · 437 阅读 · 0 评论 -
MIT6.828-OS lab5:Spawn and Shell 记录
Introduction在这次lab中,您将实现spawn,这是一个加载和运行磁盘可执行文件的库调用。 然后,您将充实kernel和库操作系统,以在控制台上运行Shell。Getting Started照以往的lab一样,创建分支,然后merge。本部分lab的主要新组件是文件系统环境,位于新的fs目录中。 扫描此目录中的所有文件,以了解所有新内容。 另外,在user和lib目录中还有一些与文件系统相关的新的源文件。合并新的lab5代码后,您应该再次运行lab4的pingpong,p原创 2020-06-29 20:56:21 · 402 阅读 · 0 评论 -
CS:APP cachelab 记录
Overview本lab将帮助您了解缓存对C程序性能的影响。 lab由两部分组成。 在第一部分中,您将编写一个小的C程序(大约200-300行),该程序模拟高速缓存的行为。 在第二部分中,您将优化一个小型矩阵转置函数,其目标是最大程度地减少高速缓存未命中的次数。Reference Trace Files讲义目录的traces子目录包含参考跟踪文件的集合,我们将使用它们来评估您在A部分中编写的缓存模拟器的正确性。跟踪文件由名为valgrind的Linux程序生成。 例如,输入在命令行.原创 2020-05-13 09:40:38 · 1044 阅读 · 0 评论 -
MIT6.828-OS lab4:Preemptive Multitasking 记录
Introduction在这个lab,您将在多个同时活动的用户态environment中实现抢占式多任务处理。在partA中,您将为JOS添加多处理器支持,实现循环调度,并添加基本的environment管理系统调用(创建和销毁environment以及分配/映射内存的调用)。在partB中,您将实现一个类似Unix的fork(),它允许用户态environment创建其自身的副本。...原创 2020-04-20 22:20:27 · 943 阅读 · 0 评论 -
CS:APP archlab 记录
Introduction在本lab中,您将学习流水线Y86处理器的设计和实现,同时优化它和基准程序以最大化性能。 允许您保留对基准程序的任何语义转换,或者对流水线处理器进行增强,或者两者。 完成lab后,您将对影响程序性能的代码和硬件之间的交互的理解有很大的提升。 lab分为三个part,每个part都有自己的练习。 在part A中,您将编写一些简单的Y86程序并熟悉Y86工具。 在part...原创 2020-04-12 10:57:38 · 1783 阅读 · 0 评论 -
MIT6.828-OS lab3:User Environments 记录
Introduction在本实验中,您将实现运行受保护的用户模式环境environment(即“进程process”)所需的基本内核功能。您将增强JOS内核,以设置数据结构来跟踪用户环境,创建单个用户环境,将程序映像加载到其中并开始运行。您还将使JOS内核能够处理用户环境发出的任何系统调用,并处理它引起的任何其他异常。Note:在本实验中,environment和process这两个术语是...原创 2020-04-02 16:08:06 · 1408 阅读 · 0 评论 -
CS:APP buflab 记录
Introduction这项任务将帮助您对IA-32调用约定和堆栈组织有详细的了解。 它涉及对lab目录中的可执行文件bufbomb施加一系列缓冲区溢出攻击。Logistics像往常一样,这是一个单独的项目。我们使用gcc的-m32标志生成了实验,因此,即使主机是x86-64系统,编译器生成的所有代码也都遵循IA-32规则。 这足以使您确信编译器可以使用所需的任何调用约定,只要它...原创 2020-03-30 09:37:57 · 410 阅读 · 0 评论 -
MIT6.828-OS lab2:Memory Management 记录
这一章主要讲内存分配。introduction在这个实验中,你将会为你的操作系统写内存管理代码。内存管理有两个部件。为了kernel能够分配并且释放内存,第一个部件是kernel的物理内存分配器allocator。你的allocator将以4096B为操作单位,称为页。您的任务将是维护数据结构,该数据结构记录哪些物理页是空闲的,哪些是已分配的,以及多少进程正在共享每个分配的页。 ...原创 2020-03-16 16:14:57 · 614 阅读 · 0 评论 -
CS:APP bomblab 记录
任务就是把bomb这个可执行文件里的炸弹拆掉,他有6组数据,你需要输入6次来拆除这个炸弹。简化流程你可以新建一个文件叫psol.txt,然后通过下面的执行命令./bomb psol.txt即可把psol.txt里的数字自动输入到bomb里。理论上直接重定向输入流<也是可以的吧。Hint1.学会用gdb。2.objdump -t可以打印可执行文件的符号表...原创 2020-03-11 10:54:19 · 543 阅读 · 0 评论 -
CS:APP datalab 记录
CS:APP这本书真的可以说是计算机的内容 给你从头讲到尾了,虽然每个领域方面的深度不够,但是已经足够了,因为每一个领域都不是这么简单就能够说完的,这本书能把这么多东西讲得很清楚真的不容易,所以看完建议挑战一下lab。要求:不允许使用条件语句和循环语句,只允许使用8个运算符:! ˜ & ˆ | + >来完成,某些题目会额外限制运算符数量,最大只能使用8位整数。...原创 2020-02-29 13:03:49 · 537 阅读 · 0 评论 -
MIT6.828-OS lab1:Booting a PC 记录
回归初心,从基础开始再搞起。环境配置不多说,都是泪,千万别用64位系统搞这个东西,搞到最后我都搞不定。32位直接10分钟搞定了。基本如下。1.先安装依赖库libsdl1.2-devlibtool-binlibglib2.0-devlibz-devlibpixman-1-dev2.把官方6.828的qemu clone下来然后执行下面命令安装...原创 2020-01-02 10:30:02 · 693 阅读 · 0 评论 -
linux后端开发常用的指令
1.netstatnetstat命令是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。-a或--all:显示所有连线中的Socket;-A<网络类型>或--<网络类型>:列出该网络类型连线中的相关地址;-c或--continuous:持续列出网络状态;-C或--cache:显示路由器配置的快取信息;-e...原创 2018-04-06 19:56:09 · 581 阅读 · 0 评论 -
进程和线程总结
感觉上课学的操作系统里讲的并不是很好,找了两篇文章基本上能总结这两个东西.首先是这个:https://www.cnblogs.com/yuanchenqi/articles/6755717.html里面提到进程的上下文切换,能更好理解进程和线程.然后是这个:https://blog.csdn.net/wangqyoho/article/details/52598859基本上能概括它...原创 2018-04-30 14:18:16 · 196 阅读 · 0 评论 -
僵尸进程,孤儿进程和守护进程的定义
僵尸进程:父进程fork一个子进程后,子进程退出,父进程没有调用wait或者waitpid函数获取子进程信息,那么子进程的资源就不会释放,就会变成僵尸进程。孤儿进程:父进程fork一个子进程后,父进程退出,然后子进程就归init进程管,这时候子进程就是孤儿进程.守护进程:守护进程相当于windows的服务,运行在后台且不与任何控制终端关联的进程,是一种生命周期比较长的进程,创建守护进程的方...原创 2018-05-13 16:36:03 · 487 阅读 · 0 评论 -
从IO模式到epoll的详解
这里根据UNIX网络编程简单概括一下IO模型。5种:阻塞式IO、非阻塞式IO、IO多路复用、信号驱动式IO、异步IO。阻塞式:调用系统调用后一直阻塞知道数据复制完成。非阻塞式:不断通过系统调用轮询,成功后返回成功指示。多路复用:阻塞于系统调用之上,数据准备好后返回可读,再通过系统调用读取数据。优点是可以处理多个描述符,因为这个方法调用两次系统调用,所以连接极少的情况下并没有优势。...原创 2018-04-21 16:22:27 · 202 阅读 · 0 评论 -
makefile编写
详情请看:https://blog.csdn.net/liang13664759/article/details/1771246这里只复制里面一段代码方便我自己记忆..对了有个点要注意,shell命令要按开头要3到4个空格,不然会报错.objects = main.o kbd.o command.o display.o /insert.o search.o files.o utils.o...原创 2018-04-20 15:07:00 · 139 阅读 · 0 评论 -
静态链接库和动态链接库
详解:http://www.cnblogs.com/skynet/p/3372855.html我觉得上面这篇说的很不错,基本都能看懂.今天被问到了,再复习一遍,生成静态库和动态库的方法:静态库直接用ar工具,例子:ar -crv libstaticmath.a StaticMath.o动态库的例子:gcc -c -fPIC max.cgcc -shared -o lib...原创 2018-04-20 16:21:47 · 134 阅读 · 0 评论 -
判别系统大小端存储的方法及程序代码
考虑一个16位整数,它由2个字节组成.内存中存储这两个字节有两种方法:一种是将低序字节存储在起始位置,称为小端字节序;另一种方法是将高序字节存储在起始地址,这称为大端字节序.代码如下(摘自UNIX网络编程):#include <stdio.h>int main(){ union{ short s; char c[sizeof(short)]; }un; un...原创 2018-04-30 13:22:10 · 194 阅读 · 0 评论 -
Linux内部定义的调试宏
Linux几个调试宏__FUNCTION__:在哪个函数 __TIME__:当前时间 __LINE__:当前行数 __FILE__:当前文件 __DATE__:当前日期原创 2018-05-13 17:53:54 · 534 阅读 · 0 评论 -
系统调用和库函数区别+用户态和内核态的转换
系统调用是系统提供给程序来操作硬件的一个接口。运行在内核态,一般来说可移植性不高,因为不同的操作系统有不同的系统调用。库函数运行在用户态,虽然实现上也用到了系统调用,但是一般来说库函数都会通过缓冲等机制减少系统调用的次数,从而达到速度上的提高,而且它是与系统无关的,可移植性较高。 一般来说从用户态切换到内核态有三种方式:一.是中断进入内核二.是异常进入内核三.是系统调用进入内核...转载 2018-07-18 21:49:47 · 2016 阅读 · 0 评论