
Linux系统及系统编程
文章平均质量分 95
开源精神与发行版本,云服务器介绍,Linux基础指令操作,Linux权限管理与特殊权限,Linux用户管理,命令行开发工具,冯诺依曼体系,进程概念与控制,进程地址空间,磁盘与Ext系列文件系统,文件描述符合重定向原理,inode与软硬链接,动静态库使用,制作,加载原理,进程间通信,进程与信号。
黎相思
天将降大任于斯人也,必先苦其心志,劳其筋骨,饿其体肤,空乏其身,行拂乱其所为,所以动心忍性,增益其所不能。
展开
-
线程同步与互斥
某些类,只应该具有一个对象(实例),就称之为单例。例如一个男人只能有一个媳妇。在很多服务器开发场景中,经常需要让服务器加载很多的数据(上百G)到内存中,此时往往要用一个单例的类来管理这些数据。原创 2025-05-14 21:49:41 · 87 阅读 · 0 评论 -
线程概念与控制
在一个程序里的一个执行路线就叫做线程(thread)。更准确的定义是:线程是“一个内部的控制序列”一个进程至少都有一个执行线程线程在进程内部运行,本质是在进程地址空间运行在Linux系统中,在CPU眼中,看到的PCB都要比传统的进程更加轻量化透过进程虚拟地址空间,可以看到进程的大部分资源,将进程资源合理分配给每个执行流,就形成了线程执行流。原创 2025-05-04 23:03:04 · 172 阅读 · 0 评论 -
Linux进程信号
上⾯所说的所有信号产⽣,最终都要有OS来进⾏执⾏,为什么?OS是进程的管理者• 信号的处理是否是⽴即处理的?在合适的时候• 信号如果不是被⽴即处理,那么信号是否需要暂时被进程记录下来?记录在哪⾥最合适呢?• ⼀个进程在没有收到信号的时候,能否能知道,⾃⼰应该对合法信号作何处理呢?已经知道怎么处理了,要么忽略,要么默认,大部分信号是默认。• 如何理解OS向进程发送信号?能否描述⼀下完整的发送处理过程?发信号的本质就是修改位图,不再叫发信号,更喜欢叫写信号。信号忽略&&信号默认exit(1);原创 2025-03-29 21:10:17 · 124 阅读 · 0 评论 -
VMWare的下载安装以及Linux镜像的安装配置
本博客涉及VMWare的下载安装,Ubuntu、Centos、OpenEuler的镜像的下载以及安装配置和xshell的下载安装配置并且连接Linux虚拟机、以及在Linux环境下怎么下载安装开发工具,怎么写代码,怎么配置调试工具,希望可以帮助到大家。由于Centos停更了,所有这里我们就使用Ubuntu,其实两者差距不是很大,命令都是差不多一样的,只是有的配置文件存放的地方不一样,所以这里不必纠结,Ubuntu的群体大多数都是学生,而且Ubuntu的图形化界面做的也很好,最适合新手学习。原创 2025-03-13 15:06:48 · 76 阅读 · 0 评论 -
进程间通信
进程间通信(Inter-Process Communication,IPC)是指运行在同一台计算机或不同计算机上的多个进程间进程数据交换和通信的技术。由于每个地址都有自己的地址空间,它们无法直接访问彼此的数据,因此需要通过特定的机制来实现通信。IPC是操作系统和多进程编程中的一个重要概念,广泛应用于分布式系统,多任务操作系统以及各种应用程序之间。原创 2025-03-05 22:56:52 · 129 阅读 · 0 评论 -
库制作与原理
库是写好的现有的,成熟的,可以复用的代码。现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常。本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。静态库.a[Linux]、.lib[windows]动态库.so[Linux]、.dll[windows]// ubuntu 动静态库// C//C++// Centos 动静态库// C// C++静态链接的出现,提高了程序的模块化水平。原创 2025-02-15 23:26:04 · 151 阅读 · 0 评论 -
Ext系列文件系统
code-hard和code.c的inode值居然是一样的,硬链接,本质不是一个独立的文件,因为它没有独立的inode,硬链接本质是一组新的文件名和目标inode number的映射关系。2就是多了一个新的文件名指向目标文件,这个2叫做硬链接数。(在inode属性中存在引用计数)对文件进行备份!!!dir有两个文件名指向这个目标文件,一个是dir,另一个是dir目录下的"."那么我再在dir里面创建一个文件夹,那么它就会变成3。因为hello中有个..指向该目标文件。“.”和".."是硬链接。原创 2025-02-14 01:18:02 · 81 阅读 · 0 评论 -
基础IO
pathname: 要打开或创建的⽬标⽂件flags: 打开⽂件时,可以传⼊多个参数选项,⽤下⾯的⼀个或者多个常量进⾏“或”运算,构成flags。参数:O_RDONLY: 只读打开O_WRONLY: 只写打开O_RDWR : 读,写打开这三个常量,必须指定⼀个且只能指定⼀个O_CREAT : 若⽂件不存在,则创建它。需要使⽤mode选项,来指明新⽂件的访问权限O_APPEND: 追加写返回值:成功:新打开的⽂件描述符失败:-1缓冲区是内存空间的一部分。原创 2025-02-11 21:45:49 · 108 阅读 · 0 评论 -
进程控制
一个进程进入僵尸,代码和数据以及页表可以释放,但是PCB不能释放,所以退出码以及信号都放在了PSB中,然后父进程去调用系统接口,然后将值设置进父进程传的地址中,这样父进程就有可以拿到子进程的退出信息了。一个是库函数,一个是系统调用,上下层的关系,exit函数是语言上的,而exit要想终止程序必须调用_exit这种系统接口,只有调用操作系统提供的接口,它才能终止进程。当然,我们可以让子进程死循环,那么父进程就一直等待,然后杀掉子进程,父进程获取到的信号就为9,此时退出码无意义。(查看进程的退出码)原创 2025-02-09 03:45:51 · 78 阅读 · 0 评论 -
进程概念
在系统当中查找一个最合适调度的进程的时间复杂度是一个常数,不随着进程增多而导致时间成本增加,我们称之为进程调度O(1)算法!现在我们就可以理解为什么有NI值了?比如我的程序在运行的时候我修改优先级,那么到底该放在活跃进程还是过期进程,只能等程序跑完往过期进程中放的时候根据nice值的修改放。原创 2025-02-07 15:48:24 · 100 阅读 · 0 评论 -
自动化构建-make/Makefile
我们前面说了,clean被.PHONY修饰了,那么这个clean就是伪目标,那么什么是伪目标呢?从我们执行结果可以看到,make只能执行一次,而make clean总是被执行,第一次编译main.c形成了main,第二次还想编译的时候其实没必要再编了,因为main.c没有被修改,也就是说这个可执行程序所依赖的源文件没有任何修改,就没有重新编的必要了,再重新编不就浪费时间吗,如果我今天的项目中存在1000个.c,我全部编译了需要花一个小时,一个小时刚编完,不小心又执行了一次make,难道再编一个小时吗?原创 2025-02-03 02:08:23 · 89 阅读 · 0 评论 -
Linux环境基础开发工具使用
这样的代码确实可以现实的倒计时程序,但是如果我将cnt的初始值9改成10的话,该程序就会出问题,当我在向显示器上打印1234的时候显示器上的是字符1,字符2,字符3,字符4,其实显示器只认字符,所以显示器才叫做字符设备,只不过显示器把字符1234写在了一起,看起来是1234,实则是1234这四个字符,所以c语言中的%d格式化是把整数转字符。vi/vim的区别简单点来说,它们都是多模式编辑器,不同的是vim是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面。原创 2024-11-28 23:28:32 · 627 阅读 · 0 评论 -
常见指令以及权限理解
目录的可执行权限是表示你可否在目录下执行命令。如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目, 即使目录仍然有-r 读权限(这 个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)。而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限。所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。原创 2024-11-02 01:37:34 · 261 阅读 · 0 评论 -
Linux环境搭建
据权威部门统计,目前Linux在服务器领域已经占据75%的市场份额,同时,Linux在服务器市场的迅速崛起,已经引起全球IT产业的高度关注,并以强劲的势头成为服务器操作系统领域中的中坚力量。据Linux基金会的研究,86%的企业已经使用Linux操作系统进行云计算、大数据平台的构建,目前,Linux已开始取代Unix成为最受青睐的云计算、大数据平台操作系统。就是创建4,5个用户,一人一个即可。学习Linux系统编程,我们首先得知道Linux从哪里来的,它是怎么发展的,要说Linux,还得从UNIX说起。原创 2024-09-29 15:07:12 · 371 阅读 · 0 评论 -
操作系统迁移(CentOs -> Ubuntu)
channel_utm_content=进入官网&channel_utm_medium=sem&channel_link_type=web&channel_utm_source=百度&sat_cf=2&channel_utm_campaign=品专&channel_utm_term=主按钮1&_channel_track_key=see7zmAJ&link_version=1&wl_src=baidu。将刚刚复制的链接拷贝进去按回车,这样就克隆好了,然后将要备份的文件和代码都放到这个文件夹下面。原创 2024-09-16 00:16:58 · 2448 阅读 · 0 评论 -
Ubuntu中如何配置ssh,连接xshell
然后填写自己的登录密码,这时密码不会显示,但确实填进去了,然后配置自己的root密码,然后确定自己的root密码,两次密码要一样,要不然会报错。1.如果之前没有配置过root密码的话这里可以配置一下root的密码,如果之前配置过,直接登录进去即可。2.我们需要下载ssh文件,并且在里面配置我们所需要的东西,比如端口,要远程连接的用户等。此刻我们的ssh配置文件就下载好了,我们需要进入ssh文件,在里面配置。进去我们首先要把端口的注释去掉,然后在下面加上我们要配置远程连接的用户。原创 2024-03-29 13:44:20 · 2702 阅读 · 0 评论