![](https://img-blog.csdnimg.cn/20210408093438428.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
操作系统和网络
文章平均质量分 86
当你温柔, 却有力量!
火的信仰叫梦想ii*
你走的每一步,都藏着未来的影子!
展开
-
操作系统与网络 (13. 典型IO/多路转接模型)
准确表达自己的诉求并且懂得拒绝,会在很大程度上减少生活中的烦恼13. 典型IO/多路转接模型13.1 典型IO13.1.1 分类(1) 阻塞IO在内核将数据准备好之前, 系统调用会一直等待. 所有的套接字, 默认都是阻塞方式.(2)非阻塞IO如果内核还未将数据准备好, 系统调用仍然会直接返回, 并且返回EWOULDBLOCK错误码.非阻塞IO往往需要程序员循环的方式反复尝试读写文件描述符, 这个过程称为轮询.(3) 信号驱动IO内核将数据准备好的时候, 使用SIGIO信号通知应用程序进.原创 2020-05-25 11:49:37 · 258 阅读 · 0 评论 -
操作系统与网络 (12. 协议讲解)
人总是在接近幸福时倍感幸福,在幸福进行时却患得患失!12. 协议讲解12.1 应用层12.1.1 功能负责应用程序之间的数据沟通;12.1.2 协议(1) 自定制协议结构化数据传输序列化将数据对象按照指定的协议组织成为能够进行持久化存储, 数据传输的二进制数据串.反序列化将二进制数据串按照指定的协议解析得到各个数据对象.(2) 知名协议HTTP协议格式首行请求首行请求方法GET/POST/HEAD/PUT/DELETEURL完整的url元素域名http:.原创 2020-05-25 11:35:14 · 583 阅读 · 0 评论 -
操作系统与网络 (11. 套接字编程 (Socket))
自修之道莫难于养心!11. 套接字编程 (Socket)11.1 UDP (User Datagram Protocol) 用户数据报协议11.1.1 流程客户端1. 创建 socket 文件描述符int socket(int domain, int type, int protocol);domain: 地址域,AF_INET_IPV4地址域type: 套接字类型 socket_STEAM: 流式套接字 socket_DGRAM: 数据报套接字protocol: 传输层协议类型 .原创 2020-05-25 11:08:22 · 302 阅读 · 0 评论 -
操作系统与网络 (10. 协议分层/传输流程)
我们坚持做一件事,并不是因为这样做了会有效果,而是坚信,这样做是对的!10. 协议分层/传输流程10.1 网络的发展历程10.1.1 网络的分类(1) 按覆盖范围划分LAN (局域网: Local Area Network)覆盖范围小 (一般为1KM以下) , 有边界,往往用于某一个群体, 传输速度一般较快(与传输距离有关), 安全, 不同的局域网之间不能接通信.MAN (城域网: Metropolitan Area Network)覆盖范围中等 (一般为1KM-10KM之间) , 局.原创 2020-05-25 11:01:28 · 388 阅读 · 0 评论 -
操作系统与网络 (2. 常见指令以及权限理解)
生活是属于每个人自己的感受,不属于任何别人的看法。2. 常见指令以及权限理解2.1基础命令2.1.1 目录相关命令(1)ls (浏览目录内容)-l(查看文件的详细信息)-a(查看所有文件包括隐藏文件)(2)pwd(查看当前所在路径)绝对路径: 基于根目录的路径表达方式 /home/dev;相对路径: 相对当前所在路径的表达方式 …/dev/;当前所在路径的表达方式: 在每一个目录下都会有两个目录. 目录自身… 自身的上一层路径(3)mkdir(创建目录)-p(递归多层级创建空.原创 2020-05-25 10:17:45 · 328 阅读 · 2 评论 -
操作系统与网络 (8. 信号Signal)
希望的事,迟早会实现,但实现的希望,总是变了味的!8. 信号Signal8.1 概念信号是进程之间实现异步通知的一种方式,对进程来说是软中断,前提是得识别这个信号。8.2 信号分类8.2.1 信号的查看使用kill -l命令查看8.2.2 信号的说明每个信号都有一个编号和一个宏定义名称,这些宏定义可以在signal.h中找到,例如其中有定义#define SIGINT 28.2.3 信号分类(总共有62种)可靠信号(实时信号)34~64号信号非可靠信号(非实时信号)1~31号.原创 2020-05-25 10:12:12 · 768 阅读 · 0 评论 -
操作系统与网络 (7. 进程间通信IPC)
愿你一生努力,一生被爱。最想要的都拥有,得不到的都释怀!7. 进程间通信IPC7.1 IPC介绍7.1.1 定义简单来说就是进程间的沟通交流,在实际工作中往往会在一个系统中出现好几个进程协同工作,这些进程就需要进行沟通交流,完成协作,操作系统为用户提供几种进程间通信方式。7.1.2 实现原理让多个进程通过访问到相同的缓冲区来实现通信,Linux下遵循一切皆文件的思想。7.1.3 本质内核中的一块缓冲区。7.1.4 操作系统为什么要为用户提供进程间通信方式(1)进程的独立性(每个进程.原创 2020-05-25 10:05:24 · 321 阅读 · 0 评论 -
操作系统与网络 (6. 基础IO)
站在山顶和站在山脚下的两个人,虽然地位不同,但在对方眼里,同样的渺小!6. 基础IO6.1 标准库IO接口6.1.1 fopen (r/r+/w/w+/a/a+///FILE *fopen(const char *path, const char *mode);1. 参数解析path: 文件路径名mode:r 只读打开已经存在的文件r+ 读者打开已经存在的文件w 只写打开文件,若文件不存在则创建,存在则长度截为0w+ 读写打开文件,若文件不存在则创建,创建的文件权限默认.原创 2020-05-25 09:52:13 · 400 阅读 · 0 评论 -
操作系统与网络 (5. Linux进程控制)
希望每天醒来都是阳光的,不会因为别人的几句话几个表情,和几个举止影响自己的心情。好好生活,总会遇见美好哦的事!5. Linux进程控制5.1 进程创建5.1.1 Fork函数(1)fork()通过复制调用创建一个新的子进程;复制(PCB–代码共享,数据独有);(2)#include <unistd.h>pid_t fork(void);(3)进程调用fork,当控制转移到内核中的fork代码后,内核将:分配新的内存块和内核数据结构给子进程 ;将父进程部分数据结构内容拷贝至.原创 2020-05-25 09:39:07 · 174 阅读 · 0 评论 -
操作系统与网络 (9. Linux多线程Thread)
生命里大多美好的事物,都是循着一种明确而未知的感觉而来的,它们会来,如同所愿!3. Linux环境基础开发工具使用(以Centos为主)3.1 系统包管理3.1.1 yumyumlistyuminstallyum remove3.2 个人编程3.2.1 vim编辑器常见模式插入模式底行模式命令模式常见指令光标移动h/j/k/l/ w/b/gg/G/ctr+f/ctr+b内容操作yy/nyy/ p/P/dd/ndd/x/dw模式切换3.2.2 gcc/g++编.原创 2020-05-25 09:28:43 · 191 阅读 · 0 评论 -
操作系统与网络 (1. Linux背景)
这一生,风雨兼程,就是为了遇见最好的自己.1. Linux背景1.1 发展史1.1.1 Unix发展史(1)1968年,通用电气公司人员、贝尔实验室和麻省理工学院的研究人员开发了Multics特殊操作系统,Multics在多任务管理和连接中综合了许多新概念;(2)1969-1970年,AT&T的贝尔实验室研究人员Ken Tompson和Dennis Ritchie,在采用很多Multics特点的基 础上开发了UINX系统,UNIX就是一个有价值的、高效的、多用户和多任务的操作系统;(.原创 2020-05-24 09:57:45 · 373 阅读 · 0 评论 -
操作系统与网络 (4. Linux进程(process))
不期待突如其来的好运,只希望所有的努力终有回报!4. Linux进程(process)4.1 冯诺依曼体系结构4.1.1 计算机的四个主要结构化部件(1)处理器(propcessor)控制计算机的操作,执行数据处理功能,通常指CPU(中央处理器);通常使用两个内部存储器:存储器地址寄存器(确定下一次读写的存储器地址)和存储器缓冲寄存器(存放要写入存储器的数据或者从存储器中读取的数据);(2)内存(main memory)内存通常称为实存储器(real memory)或主存储器(prim.原创 2020-05-24 09:49:42 · 818 阅读 · 0 评论 -
Linux_2019_5_10(在linux下实现彩色进度条程序通过Makefile进行编译)
这里是引用1.什么是进度条?1.1.定义即计算机在处理任务时,实时的,以图片形式显示处理任务的速度,完成度,剩余任务未完成任务量的大小,和可能需要处理时间,一般以长方形条状显示.[dev@localhost bit]$ ./ProcessBar [ ...原创 2019-06-05 20:35:34 · 196 阅读 · 0 评论 -
Linux_2019_6_25( 死锁产生的原因以及避免死锁的算法)
饭做大事的人,往往做小事也认真,而做小事也不认真的人,往往也做不成大事;所以凡事要认真对待,才能得到自己想要的人生。–周国平1. 死锁的定义指在一组进程中的各个进程均占有不会释放的资源,但因为互相申请被其他进程所占用不会释放的资源而处于一种永久等待状态。也指多个线程对锁资源进行竞争访问,但是因为推进顺序不当,导致相互等待,是程序无法往下运行。2. 死锁产生的原因(1) 因为系统资...转载 2019-06-25 08:40:00 · 466 阅读 · 0 评论 -
Linux_2019_5_16(使用代码模拟实现僵尸进程,孤儿进程的场景)
人生中一个决定牵动另一个决定,一个偶然注定另一个偶然,因此偶然从来不是偶然,一条路势必走向下一条路,回不了头!—龙应台1、僵尸进程什么是僵尸进程?处于僵死状态的进程-----(危害)会造成资源泄漏僵尸进程的产生原因:子进程先于父进程退出,因为要保留退出原因,因此操作系统不能直接释放所有资源,通知父进程获取退出原因,允许操作系统释放资源,但是父进程没有关注这个通知导致子进程退出后无法释...原创 2019-06-28 00:40:49 · 134 阅读 · 0 评论 -
Linux_2019_5_16(调研task_struct结构体,理解过结构体中各个字段含义)
任何时候,一个人都不应该做自己情绪的奴隶,不应该使一切行动都受制于自己的情绪,而应该反过来控制情绪!—奥里森马登1. 进程1.1 定义1.1.1 课本定义程序的一个执行实例,正在执行的程序等;(2)进程是正在执行的程序(3)进程是能分配处理器并由处理器执行的实体1.1.2 内核观点它所担当分配系统资源(CPU时间,内存)的实体。1.2 进程的两个基本的元素如下1.2.1 ...转载 2019-06-08 14:14:05 · 239 阅读 · 0 评论 -
Linux_2019_5_26(实现minishell)
如果发出声音是危险的,那就保持沉默;如果自觉无力发光,那就别而去照亮别人。但是不要习惯了黑暗就为黑暗辩护;不要为自己的苟且而得意洋洋;不要嘲讽那些比自己勇敢、更有热量的人们。可以卑微如图,不可扭曲如蛆虫!–曼德拉《浪漫人生路》1. shell原理shell就是运用程序替换的原理进行实现的。1.1 程序替换假如操作系统正在执行某一个程序,然后我们利用程序替换函 数指定一个新的程...原创 2019-06-06 10:34:50 · 290 阅读 · 0 评论 -
Linux_2019_5_26(shell的理解)
一生的时间并不多,一生的精力也不多,要搞好一件事实在不容易。用去一生,搞好了一件事,那也就可以了。世上不知道多少聪敏人,一生没有搞好一件事!–池莉1. shell的定义1.1 shell中文名,壳。从技术角度,shell可定义为:命令行解释器(command interpreter)主要包括:(1)将使用者的命令翻译给核心(kernel)处理;(2)同时,将核心的处理结果翻译给使...原创 2019-06-06 00:38:32 · 124 阅读 · 0 评论 -
Linux2_2019_5_16(进程的调度算法)
好日子不仅仅是物质的,更是精神的。好日子是皮囊,须得认为地填充灵魂。这灵魂从哪里来?读书得来,修养得来,智慧得来;安静中得来,爱意中得来,松弛中得来;不烦躁的时候得来,不虚荣的时候得来,不贪婪的时候得来;懂得珍惜时间的时候得来,懂得尊重他人的时候得来,懂得维护健康的时候得来!–池莉1. 进程调度1.1 定义操作系统管理了系统的有限资源,当有多个进程(或多个进程发出的请求)要使用...原创 2019-06-05 22:32:14 · 155 阅读 · 0 评论 -
Linux_5_10(Linux下软件安装的几种方式:源码安装、yum安装、rpm安装)
生活就像一盒巧克力,你永远都不知道你会得到什么!–《阿甘正传》1. 源码安装源码包安装会比RPM包安装慢,是因为RPM的软件包是根据特定系统和平台而指定的,经常一种程序会提供很多RPM包的格式,用户根据系统情况选择适合的RPM包直接安装,而源码包相当于通用型,可以是用于多个系统中,所以需要运行configure脚本来检测环境,生成对应的安装信息。1.1 源码安装优点(1) 文档齐全(...原创 2019-06-05 21:27:44 · 408 阅读 · 0 评论 -
Linux_2019_5_10(调试的时候需要编译选项中添加-g并自行调研readelf命令)
茶是有生命的,当你安静地把自己交给茶,把茶性泡出来, 同时唤醒自己的直觉,与自然、生活和自己对话,这样才能慢慢体会人心与物性,带着更清澈的眼光,凝视世间万物的美好!1.编译时添加-g解释1.1 找出问题位置默认编译生成的可执行文件是无法使用 gdb 来跟踪或调试的,因为可执行程序中没有可供 gdb 调试使用的特殊信息,为了将必要的调试信息整合到可执行文件中,我们便需要用到 -g 选项...原创 2019-06-05 12:30:35 · 570 阅读 · 0 评论 -
Linux_2019_5_10(除了gcc,还有哪些常用的编辑器,不限制编程语言,不限制平台)
有时候我们不开心,不幸福,是因为能力跟不上野心,欲望越过了需求!1.什么是编译器?1.1 定义编译器就是将“一种语言(通常为高级语言)”翻译为“另一种语言(通常为低级语言)”的程序。1.2 编译器的主要工作流程一个现代编译器的主要工作流程:源代码 (source code) → 预处理器 (preprocessor) → 编译器 (compiler) → 目标代码 (object c...原创 2019-06-05 12:01:46 · 186 阅读 · 0 评论 -
Linux_2019_5_10(Linux除了vim,还有哪些常用的编辑器)
世间总有一些事,使我们永远无法解释也无法说清的,我们必须接受自己的渺小和自己的无能为力!–席慕蓉一.Linux下的编译器1.vimVim是一个类似于Vi的著名的功能强大、高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性,是一个自由软件,其在代码补完、编译错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。1999 年Emacs被选为Linuxworld文本编辑分...转载 2019-05-27 00:18:09 · 2244 阅读 · 0 评论 -
Linux_2019_4_29(了解重要命令,du,df,top,free,pstack,su,sudo(sudo -,suduo -s),adduser,passwd)
从不奢求生活可以过的很顺利,只是希望在碰到难关的时候,自己有足够的能力去对付!–阿尔贝.加缪1.df命令(1)格式:df [-ahikHTm] [目录或文件名](2)功能:df命令用于显示磁盘分区上的可使用的磁盘空间,默认显示单位为KB,可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。(3)选项与参数:-a或-all:包含全部的文件系统;–block-siz...原创 2019-05-22 11:03:46 · 223 阅读 · 0 评论 -
Linux_2019_4_28(进入目录需要哪些权限,并且在目录中执行增删查(cd,touch,ls,rm,mv等)改文件动作,需要哪些权限
我们的生活方式,就像一幅油画,从近看,看不出所以然来,要欣赏她的美,就得非站远一点不可!一、Linux下根目录的文件1. 根目录”/”Linux下的根目录类似于windos下的“C:\”,位于目录结构的最顶层,它下面的文件包含了操作系统中所有的目录和文件。如下图所示:可以发现根目录下主要存在的文件有 :bin, dev ,home,lost+found,mnt,proc,sbin...原创 2019-05-18 23:54:45 · 226 阅读 · 0 评论 -
Linux_2019_4_26(Linux初级认识)
生活有多美好,取决于你有多热爱. 在这个世界上,真的没有那么多的随心所欲,看清自己,永远比看清这个世界更加重要.相信美好,珍惜当下,一个人的世界,装不下那么多的惊天动地,我们需要的,不过是一份恰到好处的幸福!一.linux课程框架:linux初始阶段:常用操作与常用工具linux系统编程阶段:系统环境编程: 进程概念: 进程控制: 基础io 进程间通信 进程信号 ...原创 2019-05-01 23:01:06 · 101 阅读 · 0 评论 -
Linux_2019_5_16(环境变量setenv函数和export命令的解释)
作为一个词语,“或者”在我们中国的语言里充满了力量,它的力量不是来自于喊叫,也不是来自于进攻,而是忍受,去忍受生命赋予我们的责任;区忍受现实给与我们的幸福个苦难,无聊和平庸!–余华一. 环境变量1. 概念一般是指在操作系统中用来指定操作系统运行环境的一些参数;例如:我们在编写C/C++代码的时候,在链接的时候,从来不知道我们所链接的动态静态库在哪里,但是照样可以链接成功,生成可执行程...原创 2019-06-25 20:18:50 · 867 阅读 · 0 评论 -
LIinux_2019_7_2(HTTP 响应状态码)
每个人心中都有一团火,路过的人只看到了烟.–梵高一.不同类型的响应状态码Code类别解释1XXInformational(信息性状态码)接收的请求正在处理2XXSuccess (成功状态码)请求正常处理完毕3XXRedirection(重定向状态码)需要进行附加操作以完成请求4XXClient Error(客户端错误状态码)服务器无法...转载 2019-07-22 10:14:27 · 194 阅读 · 1 评论 -
Linux_2019_4_30(学习如何使用命令安装gcc/g++,gdb,vim)
世界上所有的惊喜和好运,都是你累积的温柔和善良,做一个温柔纯良且内心强大的人,温暖自己,也照亮别人!一、安装gcc/g++查看软件包[dev@localhost ~]$ yum list | grep lrzszRepodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fastlrzsz.x86...原创 2019-05-25 22:21:54 · 193 阅读 · 0 评论