分类: CS基础

为了热爱,为了梦想,为了美好的将来

40 篇文章

OS概念第五章习题
5.1:对于i/o密集型来说,只需要少量的cpu时间,而对于cpu密集型来说需要大量cpu时间,如果不进行区分会导致i/o密集型一直得不到cpu资源导致饥饿 5.2:a:如果将与上下文切换关联的开销降至最低,则会增加 CPU 使用率。通过不经常执行上下文切换,可以降低上下文切换开销。但是,这可能会导致进程的响应时间增加。b:通过首先执行最短的任务,…
OS概念第四章习题
4.1:1:对于顺序执行的程序来说,例如计算个人纳税申报表的程序 2:另一个例子是"shell"程序,如C-shell或Korn shell。此类程序必须密切监视其自己的工作空间,例如打开的文件、环境变量和当前工作目录。 4.2:当有一个线程发生缺页异常时,可以切换另一个线程使用处理器,这对于多线程来说很容易实现,但是对于单线程来说只有等待处理器处…
OS概念第三章项目:手写shell
项目1:编写shell写这个项目人属实是麻了,不过又学到了好多字符串,系统函数调用,gdb调试等知识。对于shell来说最重要的一个系统调用是evecvp(char *command, char *params[])。这个函数有一个非常重要的一个点,第二个参数是变长指针数组,由于读取命令行的一行字符串,需要将这个字符串手动分割,参考一下官方源码采用…
OS概念第三章实验
编程题: 3.12:通过kill父进程pid可以解决僵尸进程问题,操作流程如图: #include <iostream> #include <unistd.h> #include <sys/types.h> #include <sys/wait.h> using namespace std; int …
OS概念第三章习题
3.1:短期(CPU 调度程序)— 从内存中选择准备执行的作业,并将 CPU 分配给它们。中期 — 特别与分时系统一起用作中间调度级别。实现交换方案以从内存中删除部分运行的程序,并在以后恢复它们以继续它们中断的位置。长期(作业计划程序)— 确定将哪些作业放入内存进行处理。主要区别在于它们的执行频率。短期内必须经常选择新的过程。长期使用的频率要低得多…
OS概念第二章实验
2.15编程题:通过标准I/O来实现文件的复制,代码如下(主要看注释部分): #include <iostream> #include <stdio.h> using namespace std; const int BUF_SIZE=3;//最小传输单元 int main(int argc,char**argv){ FIL…
OS概念第二章习题
2.1:操作系统提供的一类服务是在系统中并发运行的不同进程之间强制实施保护。仅允许进程访问与其地址空间关联的那些内存位置。此外,不允许进程损坏与其他用户关联的文件。在没有操作系统干预的情况下,进程也不允许直接访问设备。操作系统提供的第二类服务是提供基础硬件不直接支持的新功能,例如:虚拟内存和文件系统是操作系统提供的新服务。 2.2:1:寄存器中的传…
记录CS学习规划
在最开始的学习过程中,发现没有CS的基础会觉得非常难受,不知道学的到底是个啥玩意,对于高级语言只会被语法,而不了解底层发生了什么,这种学习就像是建空中楼阁,意识到这个问题之后就着手去学基础知识了,感觉非常的nice (๑•̀ㅂ•́)و✧ CS:数据库,高级数据库,分布式系统,OS(基础已完成,实验陆续完成),数据结构(基础算法掌握,刷题学习高级算法…
OS概念第一章习题
1.1:a:1.系统资源(CPU,磁盘空间,内存,外围设备)访问冲突 2.一个用户的程序与数据被另一个用户复制或移动b:不一定,因为人类设计的任何保护方案都不可避免地会被人类破坏,而且方案越复杂,就越难以对其正确实施充满信心 1.2:a:CPU和内存资源,储存和网络带宽 b:内存和CPU资源 c:功耗和内存资源 1.3:分时系统:当其他用户很少时,…
UDP套接字编程
上次记录了TCP的socket编程,对于UDP来说,其本身有优点也有缺点,无需连接,单播,组播,广播,传输快的优点多用于流媒体传输,谷歌基于UDP提出了QUIC的传输方式,这里主要讨论写一个简单的UDP协议传输的两个实体。首先需要理解client与server之间的交互,如图所示: 对于client而言,只需要知道对方的IP和端口就可以发送数据,而…