自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(10)
  • 收藏
  • 关注

原创 标准IO—系统IO的衍生

假设一行最多80字节,当一行满了80字节或者遇到 \n 的时候就会把缓冲区的数据同步到外设上。stdin 是定义在 stdio / cstdio 里面的一个全局变量,它指向标准输入设备(一般是键盘) scanf。stdout 是定义在 stdio / cstdio 里面的一个全局变量,它指向标准出错设备(一般是终端)标准IO:读一个字节,从硬盘上去取一块内容下来,放到标准IO的缓冲区。同一个文件,在不同的操作系统下面, 操作文件的代码其实不一样的。当一行没满,也没有换行符,程序在正常退出的时候也会同步。

2024-08-23 09:07:21 788

原创 Linux文件系统

裸奔”层次:不带操作系统的编程简单,粗暴应用层直接操作硬件(寄存器、IO口…)开发应用、要能搞懂原理图了解硬件的细节不能同时运行多个任务:单任务运行带“OS”的编程开发应用、主要实现应用的逻辑实现不需要关心底层硬件的实现细节可以支持多任务运行、并发API(application interface) 太多了API的实现(功能)可能不是我们想要的OS:Operating System 操作系统。

2024-08-19 09:00:19 1061

原创 小项目—线程池

2:当需要执行任务的时候,从线程池中抓取一个空闲的线程,将任务分配给该线程去执行 当有任务存在,就随机唤醒一个线程去执行。需求:设计一个线程池库,适用于线程并发执行任务,可以动态规划线程池内线程数目。:是一种多线程/并发处理形式,他运行将任务添加队列里面,并在创建线程之后自动启动这些任务。:方便的进行线程管理,可以控制同时运行的线程数量,防止线程过多导致资源耗尽的问题。3:任务执行完毕之后,线程返回到线程池中,继续待命(休眠)。通过预先创建一定数量的线程并且存储在线程池中,可以避免频繁的创建和销毁操作。

2024-08-16 10:15:48 649

原创 线程的互斥机制——实现线程之间的有序访问共享资源

线程互斥锁也是 信号量 ,只不过线程互斥锁,存在于进程地址空间,用于线程间同步和互斥操作,线程互斥锁它的效率相对信号量来说要高。至于条件变量,到底是一个什么事件或者说表示一个什么条件?完全由程序猿去解释这个条件变量所代表的含义。线程条件变量:在多线程程序设计中,可以用 条件变量 为表示一个特定的条件或者是事件。线程互斥锁:使用 pthread_mutex_t 的类型来描述一个锁。唤醒一个线程/触发条件变量(唤醒了正在等待该事件的线程)等待一个条件变量(等待该条件变量所表示的事件)(可移植操作系统接口)

2024-08-15 09:53:20 575

原创 进程中的执行分支——线程

进程:为了并发执行任务(程序),现代操作系统才引进 进程 的概念:创建一个进程开销大:子进程需要拷贝父进程的整个地址空间:进程间的通信需要用第三方 (如:内核)P1 -> copy -> 内核 -> copy -> P2进程间通信代价或者开销也是很大的。进程的地址空间是独立,要通信的话需要用第三方的空间。于是,就有人提出能不能在 同一个(同一个进程内部)进程地址空间中进行任务的并发:线程/轻量级 进程。

2024-08-14 09:29:36 820

原创 ipc通信四—信号量

有两个以上的任务(进程/线程)并发的实体,去访问同一个共享资源(硬件上,软件上)的时候,那么要保证访问的这个共享资源是有序访问,如果不是有序访问有可能造成不可预知后果。有两个实例(任务),调用 func 函数,那么 very_important_i 最后的值是多少?有可能是6,还有可能是7。6的结果不是我们想要,所有我们要保证多个实例能够有序的去访问,就需要对共享资源进行某种保护,以便实例可以有序的访问,避免竞争分析: 并发---->竞争---->共享资源的非法访问 ---->程序行为异常…

2024-08-13 09:45:48 1367

原创 ipc通信三—共享内存

是进程间通信一种方式,多个进程共享一段内存,“ 共享内存 ”。由于多个进程共享了同一段内存,这个段内存既是你的也是我的。也就是你往这个内存里面写入数据,实际上就相当于往我的内存里面写入数据。比起其他 IPC 方式( pipe fifo message… )少拷贝操作,相对而言共享内存的效率高于其他的。**:**随内核持续性在内核中开辟一块共享内存,其他的进程通过 “ 映射 ” 方式,获取这个共享内存的引用(指针)

2024-08-12 10:25:26 448

原创 ipc通信二——信号

信号是进程间通信一种方式,这个种方式没有传输数据。只是在内核中传一个信号(整数),信号的表示是一个整数,不同信号值,代表不同含义,当然用户可以自定义信号,以及自定义信号的含义解释权 归用户所有。把一个信号 与 用户自定义的信号处理函数关联起来那么在收到该信号的时候,就会自动调用该函数处理收到一个信号的时候,采用操作系统默认的行为大部分信号的默认行为,是会直接干掉进程。只有一个信号 SIGCHLD 是被忽略的。

2024-08-11 09:18:19 339

原创 ipc通信之一(管道)

在很久以前,进程间通信方式,都是通过文件。这种方式有个缺点:效率(速度)太低了。但是这种方式有一个天大的好处:简单,不需要额外 API函数支持(直接利用文件系统的 API 操作)因为弊端所有需要改进,首先问题存在于:文件内容是在外设上面,文件系统上====>访问效率低。管道:管道文件,它的文件内容是在内核/内存中。

2024-08-11 08:46:10 854

原创 基于TCP传输层协议的Socket套接字编程基本流程

地址,并且需要把这个地址告诉其他人。不进行绑定,并代表套接字没有地址,不进行绑定套。把一个套接字和一个网络地址进行绑定。如果想让其他人来主动联系。并不是任意的地址都可以(需要合法且能够正常访问)接字在进行通信时候,内核会动态为套接字指定一个地址。独立于具体协议的编程接口,这个接口位于。多次调用函数就可以与不同的客户端进行连接。任何网络应用任意一方都需要有一个。等待客户端来发起连接和客户端建立。面向字节流,针对于传输层协议为。面向数据报,针对于传输层协议为。连接,就需要绑定一个。可以绑定也可也不绑定。

2024-08-05 09:49:04 342 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除