- 博客(93)
- 收藏
- 关注
原创 秒懂:环境变量
回答:在Linux当中,存在一些全局变量的设置(环境变量),告诉命令行解释器(bash进程),应该去那些路径底下去寻找这些可执行程序。☞综下:ls不用带路径,因为ls所在的路径在环境变量当中。
2024-09-13 08:25:37
930
原创 秒懂:进程上下文切换
由进程的程序块、数据块、运行时的堆和用户栈(两者通称为用户堆栈)等组成的用户空间信息被称为用户级上下文。由进程标识信息、进程现场信息、进程控制信息和系统内核栈等组成的内核空间信息被称为系统级上下文。处理器中各寄存器的内容被称为寄存器上下文(也称硬件上下文),即进程的现场信息。
2024-09-11 08:18:07
746
原创 秒懂:进程切换——O(1)调度算法
上面这张图展示的就是Linux内核中的调度队列示意图,那么具体是如何进行队列调度的呢?首先,图中有两个queue[140],这个就是所谓的队列结构,(蓝色和红色扩出来的)其中有一个就是所谓的运行队列,也就是直接向CPU上进行调度的结构。
2024-09-10 20:05:59
1113
原创 秒懂:进程状态
当一个进程被创建时,它处于创建状态。在这个阶段,操作系统为进程分配必要的资源(将代码和数据拷贝到内存,创建PCB结构体等),并为其分配一个唯一的进程标识符(PID)。进程就绪状态是指进程已经满足了运行的条件,进程PCB被调度到CPU运行队列中,排队等待系统分配CPU资源来执行的状态。进程PCB被调度到CPU运行队列中且已被分配CPU资源,就叫做运行态。在这个阶段,进程的指令会被执行,它可以访问CPU和其他系统资源。只有运行状态下的进程才能占用CPU资源。
2024-09-07 08:46:24
956
原创 秒懂:父子进程
这样做可以节省内存,并提高效率。在Unix/Linux系统中,可以使用 getpid() 系统调用来获取当前进程的PID,使用 getppid() 系统调用来获取当前进程的父进程的PID。在子进程中,fork 也会返回一个值,但是返回的是 0,子进程是通过复制父进程的地址空间而创建的,因此子进程从父进程继承了大部分的内存布局和数据。:在父进程中,fork 返回新创建子进程的进程 ID(PID),这个 PID 是子进程的标识符,该系统调用返回调用进程的父进程的PID,即当前进程的父进程的PID。
2024-09-06 08:15:21
1752
原创 秒懂:进程(概念初晓)
课本概念:程序的一个执行实例,正在执行的程序等内核观点:担当分配系统资源(CPU时间,内存)的实体。作者理解:进程不止包括程序加载到内存的数据,还包括该进程的属性,它的这个属性,操作系统用一个结构体 PCB来封装,在linux中进程的属性统一叫做。所以程序是存储在外存中,进程PCB是在内存中的, 程序是“静”的从程序到进程是一个“动”的过程。
2024-09-04 08:22:53
377
原创 秒懂:冯诺依曼
冯诺依曼体系结构包括以下几个关键组成部分:存储器(Memory):冯诺依曼体系结构中的存储器用于存储指令和数据。这里的存储器通常指的是内存,包括随机存储器(RAM)和只读存储器(ROM)。存储器中的数据可以根据地址进行读取和写入操作。中央处理器(CPU):CPU是计算机的核心部件,负责执行指令并处理数据。CPU包括运算器(Arithmetic Logic Unit,ALU)和控制器(Control Unit)。运算器执行算术和逻辑运算,而控制器负责指挥数据的流动和执行指令的顺序。
2024-09-03 08:53:51
2086
原创 vim编辑器的优势
用户可以根据自己的喜好和需求,通过修改配置文件(如.vimrc文件)来自定义Vim的行为和外观,包括设置语法高亮、行号显示、自动缩进等。此外,Vim还拥有丰富的插件系统,用户可以通过安装和配置各种插件来扩展Vim的功能,如代码补全、语法检查、文件浏览等。Vim集成了丰富的文本编辑功能,如强大的搜索和替换功能(支持正则表达式)、宏录制与回放、多光标编辑等。综上所述,Vim以其高效的操作模式、高度的可定制性、丰富的功能、跨平台支持以及活跃的社区支持等优势,赢得了广大程序员的喜爱和推崇。
2024-08-09 10:14:57
447
原创 网络9:http协议中url中的解码和解码
因为在域名中,有些字符具有特殊的意义,例如‘/’,假如你要搜索的数据中含有‘/’,BS(浏览器和服务器)会将其进行替换,这个过程叫做编码当我们使用解码后的域名进行搜索,这个过程叫做解码。
2024-08-09 10:06:41
558
原创 网络8-- 序列化 和 反序列化
这个信息(报文)包括 发送时间,发送内容,什么人发送的,当A一次发送多条数据,B是如何选择区分并且接受的呢?那么这些信息是怎样发送的,一个个发送,还是全部发送呢?序列化和反序列化的作用也是为了更加方便进行网络收发。这三条信息在实际中会组成一个结构体!用户A在什么时候,发送了“哈哈哈”:多个字符串转化为一个字符串的过程。:多个字符串转化为一个字符串的过程。将数据从自己的发送缓冲区传输到。在应用层,这两个结构体叫做。稍加思考,我们就知道,
2024-08-08 14:02:52
750
原创 http协议中域名的理解
在http协议中,我们访问网页时,不会直接使用ip地址,而是用域名来代替。在https协议中,默认的端口号是。在http协议中,默认的端口号是。(ip+端口号‘默认的’
2024-08-08 14:02:34
916
原创 “tcp控制协议”的理解
在用户进行网络间通信时,不管是客户端还是服务端,都会有两个缓冲区——发送缓冲区和接受缓冲区。用户通过write()将数据发送到他的发送缓冲区中,再传输到服务端的接受缓冲区中。(tcp控制协议)决定-->>那么tcp控制协议闪亮登场!通过4个缓冲区进行数据交流。
2024-08-07 14:04:54
762
原创 “write()” 与 “ tcp缓冲区 ” 之间的关系
有没有拷贝成功,都不由write()决定,由tcp控制协议来控制!write()将该文本写入到tcp缓冲区中本质是。,当write()调用完,数据不一定发给。所以write() 这些不叫做。,只是用来将数据拷贝到缓冲区中。
2024-08-07 13:54:16
575
原创 网络7—tcp_socket
父进程fork(),在子进程中再 fork(), < 0 是孙子进程 ,将子进程退出。父进程直接等待,继续链接, 孙子进程怎是提供服务。因为tcp面向字节流的,所以可以用write(),read()这些面向字节流的操作。父进程和孙子进程就可以并发访问了,原理是让子进程退出,父进程直接等待完毕。tcp是面向字节流传输的,也是需要绑定的套接字的,孙子进程不用管,他会被系统领养,会被回收。创建routine()函数实现多线程模式。1.2.3.3 线程池模式。这是一个单进程版本,
2024-08-06 10:36:08
712
1
原创 互斥锁代码心得
创建一个临时对象,生命周期是在一次循环中,生命周期结束时,自动调用析构函数,不用创建不用初始化,不用加锁或者解锁。用花括号把sleep放出临界区。
2024-08-06 10:35:19
221
原创 npos解析
npos是一个常数,表示size_t的最大值(Maximum value for size_t)。许多容器都提供这个东西,用来表示不存在的位置可见他们是相等的,也就是说npos表示size_t的最大值npos可以表示string的结束位子,是string::type_size 类型的,也就是find()返回的类型。find函数在找不到指定值得情况下会返回string::npos。
2024-08-03 16:48:38
402
原创 关于inet_addr()中的参数不能是 &sring类型的 只能是 string类型变量.c_str()
inet_addr中的参数是类型的定义一个string类型的ip使用这个inet_addr()接口为什么参数为&ip会报错呢??因为 &ip 得到的是一串地址。
2024-08-02 19:05:58
284
原创 c_str()
函数可以c_str()就是将C++的string转化为C的c_str()生成一个const char *指针,指向字符串的首地址因为在c语言中没有string类型,必须通过string类对象的成员函数 c_str() 把 string 转换成c中的字符串样式。
2024-08-02 19:05:09
472
原创 网络6 -- udp_socket 实现 echo服务器
使用 func() 函数回调,从main()函数中获取数据。创建套接字时,我们要将字符型的port和ip转化为网络序列。
2024-08-01 08:43:46
1594
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人