
linux
文章平均质量分 67
记录学习笔记
小虎随笔
这个作者很懒,什么都没留下…
展开
-
内存屏障概念
内存屏障概念原创 2022-10-18 15:09:49 · 323 阅读 · 0 评论 -
守护进程介绍
守护进程概念原创 2021-06-16 23:26:43 · 273 阅读 · 0 评论 -
信号(软件中断)编程
注:目前只讨论前32个信号(1~31)ps aux 可以查看进程状态当信号停止之后,用 fg 1可以让进程继续运行;bg 1可以让它在后台运行1.信号机制(下面五种情况触发信号)man 7 signal 可查看信号机制终端特殊按键:在终端中 ctl+c SiGINT(程序终止信号) ctl+z SIGSTP(停止信号) ctl+\ SIGQUT(退出信号)硬件异常...原创 2022-10-04 20:14:08 · 551 阅读 · 1 评论 -
pcap详解
pcap格式及API详解原创 2022-10-01 10:46:44 · 7616 阅读 · 0 评论 -
线程同步之条件变量与信号量
一、条件变量1.概念条件变量用来自动阻塞一个线程,直到某种特殊情况发生为止。通常条件变量和互斥锁同时使用。条件变量的两个动作:条件不满, 阻塞线程 当条件满足, 通知阻塞的线程开始工作条件变量的类型: pthread_cond_t。2.pthread_cond_init函数#include <pthread.h>int pthread_cond_init(pthread_cond_t *restrict cond, const pthread_co.转载 2021-07-19 07:51:54 · 1019 阅读 · 0 评论 -
线程池基础
一、概念事先创建若干个可执行的线程放入池中,待要用时去从池中拿出线程而不自行创建,待使用完毕时将线程放入池中,不销毁。从而减少线程的创建和销毁线程对象带来的资源消耗。假设一个服务器完成一项任务需要时间:T1:创建线程、T2线程执行的资源消耗、T3线程销毁,而T1+T3远>T2,那么就可以使用线程池,提高服务器性能。线程池是什么?我的简单理解是有一组预先派生的线程,然后有一个管理员来管理和调度这些线程,你只需不断把需要完成的任务交给他,他就会调度线程的资源来帮你完成。那么管理员是怎么原创 2021-07-18 23:41:34 · 242 阅读 · 0 评论 -
线程基础知识点
一、概念进程并不执行任务,只是为线程提供空间和资源,线程才是执行任务的实体。转载 2021-06-20 11:07:26 · 778 阅读 · 0 评论 -
进程间通信
一、定义1.1概念进程是一个独立的资源分配单元,不同用户进程之间的资源是相互独立的,没有关联,不能在一个进程中直接访问另一个进程的资源。但是不同进程之间需要进行信息交互和状态传递等,所以产生了进程间通信。1.2目的数据传输:一个进程中的数据发送给另一个进程 通知事件:一个进程需要向另一个或一组进程发送消息,通知它们发生了某种事件(如进程终止时要通知父进程)。 资源共享:多个进程之间共享同样的资源。为此,需要内核提供互斥()和同步(同步是按照任务的顺序执行任务,前一个任务没有执行结束.原创 2021-05-21 03:17:51 · 492 阅读 · 0 评论 -
进程的创建
一、进程创建1.进程创建函数#include <sys/types.h>#include <unistd.h>pid_t fork(void);fork函数的功能:用于从一个已存在的进程中创建一个新进程,新进程称为子进程,原进程称为父进程。返回值:子进程返回0,父进程返回子进程ID。 其中pid_t的定义为typedef short pid_t; pid_t表示内核中进程表的索引。 失败:返回...转载 2021-05-09 14:02:19 · 2736 阅读 · 0 评论 -
进程的状态
转载自:博学谷在三态模型中,进程状态分为三个基本状态,即运行态,就绪态,阻塞态。在五态模型中,进程分为新建态、终止态,运行态,就绪态,阻塞态。通过fork()创建进程,然后该进程进入就绪态,通过进程调度(进程优先级越高,调度该进程的可能性越大),进程进入运行态,当该进程的时间片到时,进程重新回到就绪态。该进程在运行态时,若该进程的子进程结束了,但是父进程还在,那么父进程就是个僵尸进程,那么它被终止之后就死亡了,其不再能够复活;该进程在运行态时,若进程执行完毕或者接收到(内核发送的)SIGST转载 2021-05-05 21:04:13 · 6706 阅读 · 3 评论 -
PCB进程控制块
一、定义进程运行时,内核为进程每个进程分配一个PCB(进程控制块),维护进程相关的信息。Linux内核的进程控制块是task_struct结构体。结构体定义:struct task_struct{#ifdef CONFIG_THREAD_INFO_IN_TASK struct thread_info thread_info;#endif volatile long state; void *stack; atomic_t usage; unsign转载 2021-05-05 18:36:15 · 231 阅读 · 0 评论 -
并行和并发
转载自:博学谷并行(parallel):指在同一时刻,有多条指令在多个处理器上同时执行。并发(concurrency):指在同一时刻只能有一条指令执行,但多个进程指令被快速的轮换执行,使得在宏观上具有多个进程同时执行的效果,但在微观上并不是同时执行的,只是把时间分成若干段,使多个进程快速交替的执行。举例说明:并行是两个队列同时使用两台咖啡机 并发是两个队列交替使用一台咖啡机...转载 2021-05-05 17:21:37 · 116 阅读 · 0 评论 -
同步和异步
同步和异步的区别程序中的同步是按照任务的顺序执行任务,前一个任务没有执行结束,下一个任务不会执行,要等待上一个任务执行结束。异步:是同一时间内可以做多件事,(这往往伴随着多线程)同步和异步主要的优缺点:1、同步的执行效率会比较低,耗费时间,但有利于我们对流程进行控制,避免很多不可掌控的意外情况;2、异步的执行效率高,节省时间,但是会占用更多的资源,也不利于我们对进程进行控制在网上看到的一个比较详细的同步异步的比较,分享给大家,大家看比较重要的几点,我将用“*”标出重要的点:异步的使用场转载 2021-05-01 02:41:46 · 466 阅读 · 1 评论 -
阻塞和非阻塞
一、定义阻塞和非阻塞关注的是程序在等待调用结果(消息,返回值)时的状态.阻塞调用是指调用结果返回之前,当前线程会被挂起。调用线程只有在得到结果之后才会返回。非阻塞调用指在不能立刻得到结果之前,该调用不会阻塞当前线程。例子:你打电话问书店老板有没有《分布式系统》这本书,你如果是阻塞式调用,你会一直把自己“挂起”,直到得到这本书有没有的结果,如果是非阻塞式调用,你不管老板有没有告诉你,你自己先一边去玩了, 当然你也要偶尔过几分钟check一下老板有没有返回结果。Q:为什么塞..转载 2021-04-29 23:10:41 · 312 阅读 · 0 评论 -
makefile
makefile和cmake原创 2021-04-28 14:56:31 · 2093 阅读 · 3 评论 -
GDB调试器
一、功能介绍启动程序,可以按照你的自定义的要求随心所欲的运行程序。 可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式) 当程序被停住时,可以检查此时你的程序中所发生的事。 动态的改变你程序的执行环境。二、 生成调试信息一般来说GDB主要调试的是C/C++的程序。要调试C/C++的程序,首先在编译时,我们必须要把调试信息加到可执行文件中。使用编译器(cc/gcc/g++)的 -g 参数可以做到这一点。如:gcc -g hello.c -o hellog++ -g转载 2021-04-28 10:25:12 · 152 阅读 · 0 评论 -
静态库与动态库的制作
动态库和静态库原创 2021-04-27 11:48:28 · 364 阅读 · 0 评论 -
vim和gcc基本操作
vim filename:打开或(文件不存在)新建文件。shift+ZZ:命令模式下保存文件并退出。ESC+i:命令模式-》编辑模式原创 2021-04-26 15:19:23 · 315 阅读 · 1 评论 -
linux常见目录
一、目录结构图二、目录说明/:根目录,一般根目录下只存放目录,在Linux下有且只有一个根目录。所有的东西都是从这里开始。当你在终端里输入“/home”,你其实是在告诉电脑,先从/(根目录)开始,再进入到home目录。 /bin:/usr/bin:可执行二进制文件的目录,如常用的命令ls、tar、mv、cat等。 /boot:放置linux系统启动时用到的一些文件,如Linux的内核文件:/boot/vmlinuz,系统引导管理器:/boot/grub。 /dev:存放linux...转载 2021-04-23 00:37:10 · 110 阅读 · 0 评论