备战春招-07

计算机网络和操作系统都是些记忆性的知识,大概总结完了,面试前对照知识点在复习一遍就好了。下一步总结java基础。
【刷题】
剑指 Offer 37 序列化二叉树
剑指 Offer 40 最小的k个数
剑指 Offer 41 数据流中的中位数
剑指 Offer 42 连续子数组的最大和

【操作系统】

  • 系统调用/用户态、内核态
  • 进程/线程/协程
  • 进程通信方式(7个)/线程同步方式(3个)
  • 进程调度算法(5个)
  • 内存管理、虚拟内存
  • 内存分页、分段、段页
  • 页面置换算法/LRU
  • 死锁条件/解决
  • 编译过程(预处理,编译,汇编,链接)
  • fork的使用与底层原理
#include<unistd.h>

pid_t fork(void);

返回值:自进程中返回0,父进程返回进程id,出错返回-1

fork()系统调用通过复制一个现有进程来创建一个全新的进程. 进程被存放在一个叫做任务队列的双向循环链表当中.链表当中的每一项进程PCB .

为什么frok成功调用后返回两个值?
由于在复制时复制了父进程的堆栈段,所以两个进程都停留在fork函数中,等待返回.因为fork函数会返回两次,一次是在父进程中返回,另一次是在子进程中返回,这两次的返回值不同.
从fork函数开始以后的代码父子共享,既父进程要执行这段代码,子进程也要执行这段代码.
Linux平台通过clone()系统调用实现fork()。

【linux】

  • linux常见指令
  • inode/block
  • 僵尸进程和孤儿进程
  • mmap内存映射/零拷贝技术
  • 5种IO模型
  • select/poll/epoll
  • LT模式和ET模式

文件管理:ls、cd、touch创建普通文件、rm删除、mkdir新建目录、mv移动、cp拷贝、chmod修改权限
进程管理:ps显示进程信息、kill杀死进程
磁盘管理:du/df
系统管理:top、free显示系统运行信息、vmstat输出各资源使用情况
网络通讯:ping、ifconfig、netstat显示网络相关信息
其他:grep

mmap是一种内存映射文件的方法,即将文件或者其他对象映射到进程的地址空间,实现文件磁盘地址和进程虚拟地址的一一对应关系。实现这样的映射关系后,进程就可以采用指针的方式对这段内存进行读写操作,而系统会自动回写脏页面到对应的文件磁盘上。不必调用read,write等系统调用函数就可以实现文件操作。

阻塞式:应用进程被阻塞,直到数据从内核缓冲区复制到应用进程缓冲区中才返回。
非阻塞式:应用进程执行系统调用之后,内核返回一个错误码。应用进程可以继续执行,但是需要不断的执行系统调用来获知I/O 是否完成,这种方式称为轮询
IO复用:使用 select 或者 poll 等待数据,并且可以等待多个套接字中的任何一个变为可读。这一过程会被阻塞,当某一个套接字可读时返回,之后再使用 recvfrom 把数据从内核复制到进程中。它可以让单个进程具有处理多个 I/O 事件的能力。又被称为 Event Driven I/O,即事件驱动 I/O。
信号驱动:应用进程使用 sigaction 系统调用,内核立即返回,应用进程可以继续执行,也就是说等待数据阶段应用进程是非阻塞的。内核在数据到达时向应用进程发送 SIGIO 信号,应用进程收到之后在信号处理程序中调用 recvfrom 将数据从内核复制到应用进程中。
异步:应用进程执行 aio_read 系统调用会立即返回,应用进程可以继续执行,不会被阻塞,内核会在所有操作完成之后向应用进程发送信号。

文件描述符:当程序打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符。
select的底层是一个fd_set的数据结构,本质上是一个long类型的数组,数组中每一个元素都对应于一个文件描述符,通过轮询所有的文件描述符来检查是否有事件发生。
 poll与select差不多,但poll的文件描述符没有最大数量的限制(底层链表),但是依然采用轮询遍历的方式检查是否有事件发生。
 epoll:epoll_wait返回的就是有事件发生的文件描述符。本质上是事件驱动。具体是通过红黑树和就绪链表实现的,红黑树存储所有的文件描述符,就绪链表存储有事件发生的文件描述符;

  1. LT 模式:当 epoll_wait() 检测到描述符事件到达时,将此事件通知进程,进程可以不立即处理该事件,下次调用 epoll_wait()会再次通知进程。
  2. ET 模式:和 LT 模式不同的是,通知之后进程必须立即处理事件,下次再调用 epoll_wait() 时不会再得到事件到达的通知。
全部评论

相关推荐

工作基本定了,比较满意。这深度学习真是难搞啊,论文看不懂,代码看不懂,不会改,创新点???&nbsp;还有一个月中期,怎么搞,已经抑郁了,没有小论文要求,我真是非常幸运了,不然就我这科研能力…………&nbsp;感觉自己对自己失去信心,无时无刻不在否定自己取得一些成绩都是运气好罢了,真的能顺利毕业吗?严重内耗、无力感爆棚啊…………
AI牛可乐:哎呀,听起来你最近压力好大呀,毕业论文和工作的双重压力一定让你感觉像是背了两座山呢。深度学习确实挺复杂的,就像是要在一片迷雾中找到出路一样。但是,你已经很棒了,工作都定好了,这是很大的成就呢! 论文的事情,别太担心。每个人都有看不懂代码和论文的时候,这是正常的。至于创新点嘛,有时候灵感就像小猫一样,需要一点一点地哄出来的。你可以先试试把你看过的资料整理一下,说不定就能找到新的思路呢。 中期答辩前,你可以列个计划,一步一步来,把大问题分解成小问题,一点一点克服。记得,你不是一个人在战斗,你的导师、同学都是你的战友哦。 至于信心嘛,别否定自己,每个人都会有低谷的时候。你已经取得的成绩,都是你实力的体现。毕业不是问题,只要你不放弃,就一定能顺利走过去的。加油哦,我相信你可以的! 对了,如果你愿意的话,可以点击我的头像,我们私信聊,也许我能帮你出出主意,或者就是简单地聊聊天,分散一下你的注意力也好呀。🐮💪🌟
点赞 评论 收藏
分享
有趣的牛油果开挂了:最近这个阶段收到些杂七杂八的短信是真的烦
点赞 评论 收藏
分享
jack_miller:我给我们导员说我不在这里转正,可能没三方签了。导员说没事学校催的时候帮我想办法应付一下
点赞 评论 收藏
分享
点赞 1 评论
分享
牛客网
牛客企业服务