![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux
文章平均质量分 84
Hidden.Blueee
这个作者很懒,什么都没留下…
展开
-
多线程—(3.线程应用)
线程应用线程池应用场景优势实现代码线程安全的单例模式饿汉实现方式和懒汉实现方式饿汉实现方式懒汉实现方式 线程池 一种线程使用模式,线程过多会带来调度开销,进而影响缓存局部性和整体性能。 线程池维护着多个线程,等待着监督管理者分配可并发执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价。 线程池不仅能够保证内核的充分利用,还能防止过分调度。可用线程数量应该取决于可用的并发处理器、处理器内核、内存、网络sockets等的数量。 实际上就是一堆线程(有最大数量限制)+ 线程安全的任务队列。 应原创 2021-05-01 00:02:56 · 92 阅读 · 1 评论 -
多线程—(2.线程安全)
概念: 多线程对于临界资源的访问操作是安全的。 实现 同步互斥 互斥通过对临界资源同一时间的唯一访问保证访问安全。 同步通过条件判断让线程对临界资源的访问更加合理。 互斥的实现 互斥锁 原理 本质上是一个01计数器,标记临界资源的两种状态 访问资源之前加锁,通过计数器判断能否访问,不能则阻塞. 访问资源之后解锁:通过计数器标记资源为可访问,唤醒阻塞。 互斥锁本身也是临界资源,但是互斥锁自身通过原子操作保证自己安全。 操作流程 1.定义 2.初始化 3.访问临界资源之前加锁 4.访问临界资源之后解锁 5销毁互原创 2021-04-25 18:16:50 · 228 阅读 · 0 评论 -
多线程—(1.概念与线程控制)
线程概念 什么是线程 LWP:light weight process 轻量级的进程(在Linux环境下) 。 线程是进程中的一条执行流程。 进程是系统进行资源的分配基本单位,线程是系统进行调度运行的基本单位。 各个线程之间共享同一个虚拟地址空间。 线程共享资源 1.虚拟地址空间 2.每种信号的处理方式 3.当前工作目录 4.用户ID和组ID 5.IO信息 线程独有资源 1.标识符 2.栈 3.寄存器 4.errno变量 5.信号屏蔽字 6.调度优先级 多线程与多进程优缺点 多线程 优点 1.线程间原创 2021-04-21 17:41:47 · 115 阅读 · 0 评论 -
进程信号
进程信号信号概念linux信号种类信号在内核中的表示信号的生命周期产生硬件产生软件产生注册注销处理处理方式1.默认处理2.忽略处理3.自定义处理方式自定义处理方式信号捕捉流程信号阻塞操作代码示例信号的基本作用SIGCHLD信号SIGPIPE信号 信号概念 信号就是一个软件中断,通知进程发生了某个事件,打断进程当前操作,去处理这个事件。 linux信号种类 1-31:非可靠信号 34-64:可靠信号 信号在内核中的表示 每个信号都有两个标志位分别表示阻塞(block)和未决(pending),还有一个函数指原创 2021-04-11 15:03:37 · 87 阅读 · 0 评论 -
进程间通信
热同时原创 2021-04-09 14:59:54 · 137 阅读 · 0 评论 -
基础IO
库函数IO接口:fopen、fwrite、fread、fclose、fseek fopen 打开文件 FILE* fopen(const char* path,const char* mode) fopen的参数: path: 要打开文件的路径名称 mode: “r”:只读 “r+”:可读可写 “w”:只写,不存在时创建新文件 “w+”:可读可写,不存在时创建新文件 “a”:追加只写,将数据写入文件末尾,不存在则创建新文件 “a+”:可读、追加写,从起始读,从末尾写,不存在则创建新文件 “b”对:文原创 2021-04-07 17:19:08 · 101 阅读 · 0 评论 -
Linux实现简易版的shell
什么是shell 现在我们使用的操作系统(Windows、Mac OS、Android、iOS等)都是带图形界面的,简单直观,容易上手,对专业用户(程序员、网管等)和普通用户(家庭主妇、老年人等)都非常适用;计算机的普及离不开图形界面。 然而在计算机的早期并没有图形界面,我们只能通过一个一个地命令来控制计算机,这些命令有成百上千之多,且不说记住这些命令非常困难,每天面对没有任何色彩的“黑屏”本身就是一件枯燥的事情;这个时候的计算机还远远谈不上炫酷和普及,只有专业人员才能使用。 对于图形界面,用户点原创 2021-03-24 10:47:30 · 312 阅读 · 0 评论 -
进程控制
文章目录进程创建函数fork写时拷贝函数vforkvfork和fork的区别进程退出进程退出的情况进程退出常见方式_exit函数exit函数return退出进程等待必要性进程等待的方法wait方法waitpid方法获取子进程status终止信号代码转换进程替换替换原理替换函数 进程创建 函数fork 通过man可以查看到fork函数的作用: creates a new process by duplicating the calling process, 通过复制调用进程来创建新进程。 #includ原创 2021-03-22 17:05:28 · 97 阅读 · 0 评论 -
程序地址空间
文章目录Linux下看到的地址程序地址空间概念为什么需要虚拟地址?内存管理方式:缺页中断 Linux下看到的地址 先来看一段代码: 可以看到父子进程输出的内容一样,地址一样,这很好理解因为子进程是以父进程为模板的。 将代码修改一下后: 可以看到,父子进程输出的内容不一样,这说明父子进程输出的不是一个变量,但是地址却是一样的。 这是什么原因呢? 首先要知道,我们通常所说的地址都是内存单元的编号,实际上硬件内存是不会有这些划分的。 实际上,在进程中程序访问的这些地址都是虚拟地址。是系统给进程描述的。 程原创 2021-03-20 17:07:21 · 182 阅读 · 0 评论 -
进程概念和进程状态
进程概念 运行中的程序。 对于操作系统来说就是PCB进程控制块,在Linux中就是一个task_struct结构体。 是操作系统对程序运行的动态描述,系统通过这个描述实现程序运行的管理和调度。 程序运行示例 要运行main这个程序,操作系统找到对应main的PCB,在PCB上读取main运行所需要的的信息,加载到cpu上,cpu就开始运行这个程序了。 PCB描述的信息 (task_struct内容) 内存指针:包括程序代码和进程相关数据的指针。 上下文数据:进程执行时处理器的寄存器中的数据。 程序计原创 2021-03-20 15:50:56 · 274 阅读 · 0 评论 -
linux基础指令和常用工具
基础指令 目录操作 ls列出目录的内容; ls -a 列出隐藏文件,文件中以开头的均为隐藏文件,如:~/.bashrc ls -l 列出文件的详细信息 ls -R 连同子目录中的内容起列出 pwd 查看当前所在路径,当打开终端时,如果需要自己目前在哪一个目录,可以使用pwd命令,它返回一个绝对的路径(从根“/”开始的路径) mkdir mkdir用于创建目录,可以一次创建多个 rmdir rmdir用于删除空目录,可以一次删除多个 rm 使用rm命令删除文件。但是rm不能简单地删除目录。使用“rm - r原创 2021-03-18 12:45:58 · 136 阅读 · 0 评论