![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux操作系统基础知识
文章平均质量分 68
是东东东啊
失败了就继续努力,漫漫长路何愁无期。
展开
-
线程同步概念
因此我们要谨慎使用自旋锁,自旋锁通常用于以下情况:需要保护的代码段执行时间很短,这样就会使得持有锁的线程会很快释放锁,而“自旋”等待的线程也只需等待很短的时间;当一个线程可以修改的变量,其它的线程也可以读取或者修改的时候,这个时候就存在数据一致性的问题,需要对这些线程进行同步操作,确保它们在访问变量的存储内容时不会访问到无效的值。⚫ 当读写锁处于写加锁状态时,在这个锁被解锁之前,所有试图对这个锁进行加锁操作(不管是以读模式加锁还是以写模式加锁)的线程都会被阻塞。⚫ 另一个线程中,条件满足时发出“信号”。原创 2023-08-30 18:29:29 · 138 阅读 · 0 评论 -
线程基本概念
(如为子线程收尸)。原创 2023-08-30 18:26:18 · 87 阅读 · 0 评论 -
进程间通信
系统中每个进程都有自己的地址空间,并且相互独立、隔离,每个进程都处于自己的地址空间中。原创 2023-08-30 18:22:45 · 59 阅读 · 0 评论 -
进程状态与进程关系
Linux 系统下进程通常存在 6 种不同的状态,分为:就绪态、运行态、僵尸态、可中断睡眠状态(浅度睡眠)、不可中断睡眠状态(深度睡眠)以及暂停态。一个新创建的进程会处于就绪态,只要得到CPU就能被执行。它们的关系如图所示。原创 2023-08-30 18:18:09 · 134 阅读 · 0 评论 -
进程与子进程
1.fork()创建子进程一个现有的进程可以调用 fork()函数创建一个新的进程,调用 fork()函数的进程称为父进程,由 fork()函数创建出来的进程被称为子进程(child process)。(使用该函数需要包含头文件<unistd.h>)2.创建的子进程为新的独立的进程,与父进程地位相等。但父子进程之间也有些相同点,子进程拷贝了父进程的数据段、堆、栈以及继承了父进程打开的文件描述符。对于程序来说,子进程和父进程,在内存中只存在一份代码段数据。原创 2023-08-30 18:14:20 · 249 阅读 · 0 评论 -
程序与进程
进程是一个动态过程,而非静态文件,它是程序的一次运行过程,当应用程序被加载到内存中运行之后它就称为了一个进程,当程序运行结束后也就意味着进程终止,这就是进程的一个生命周期。2.进程号:Linux 系统下的每一个进程都有一个进程号(processID,简称 PID),进程号是一个正数,用于唯一标识系统中的某一个进程。Linux 系统下,应用程序运行在一个虚拟地址空间中,所以程序中读写的内存地址对应也是虚拟地址,来实现,加载器是操作系统中的程序,当执行程序时,加载器负责将此应用程序加载内存中去执行。原创 2023-08-30 18:11:03 · 375 阅读 · 0 评论 -
linux中memset作用,为什么要用memset
定义了数组arr,包含100个元素,如果你写成int arr[100]=0;这种情况的初始化,有两种方法,一种是一个一个的初始化,如for(int i=0;所谓“初始化”,当然是指将你定义的变量或申请的空间赋予你所期望的值,例如语句int i=0;各参数解释如下:arr是数组的首地址,0就是要讲这些地址的内容赋值为0,sizeof(int)求出int类型的长度,乘以100就表示arr数组的整个长度。当然,如果用malloc分配的内存,一般只能使用memset来初始化了,用第一种初始化方法明显不合适。原创 2023-08-30 18:08:48 · 109 阅读 · 0 评论 -
用户ID(UID)和用户组ID(GID)
7.在 Linux 系统下,可以使用 getuid 和 getgid 两个系统调用分别用于获取当前进程的用户 ID 和用户组ID,这里说的进程的用户 ID 和用户组 ID 指的就是进程的实际用户 ID 和实际组 ID。6.Linux中可以通过chown指令来改变文件得所有者,chown是一个系统调用。2.Linux 系统中,每个用户的 ID 细分为 2 种,分别是用户 ID(User ID,简称 UID)和组 ID(Group ID,简称 GID),这与文件有拥有者和拥有群组两种属性相对应。原创 2023-08-30 18:07:00 · 1200 阅读 · 0 评论