![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
操作系统
文章平均质量分 87
@@老胡
思考与实践并行,努力成为发现和解决问题的人
展开
-
ubuntu服务器安装labelimg报错记录
这里可能会有疑问说,怎么找到就是要安装这些包,说实话,我也不知道,我自己一个个百度的,那就大家自己百度吧。,这个是百度得到的结果,安装完后重新ldd,看还有哪一些是not found 的,一个个安装就可以了。这个报错不会解决,试了很多方法都不行,什么链接xshell什么的都不行。然后把报错提示的not found的都安装一遍,就可以了。按照步骤安装完labelimg后,在终端输入。,大家可以自己甄别,反正我试过我不能用。解决完上面的,又来一个报错。原创 2024-07-13 11:35:35 · 646 阅读 · 0 评论 -
linux 讨论题合集(个人复习)
在linux中,一切皆文件,目录也是一个文件,也有属于自己的innode,与普通文件不同,普通文件的数据块中存放的是文件数据,而目录文件的数据块中存储的是别的文件的信息,一条这样的信息就是一个FCB,也就是一个文件目录项,FCB的有序集合称为文件目录。mmap: mmap是一种将文件内存映射到进程的虚拟地址空间的技术,在这种机制下,文件可以被视为内存的一部分,可以实现程序直接对这部分的内存进行读写操作,实现像访问内存一样对文件进行读写,这种方法提高了处理的效率,简化了文件的操作。原创 2023-11-29 21:43:32 · 441 阅读 · 0 评论 -
linux socket套接字
否则,查看缓冲区剩余空间是否容纳得下要发送的len长度,若不够,则拷贝一部分,并返回拷贝长度(指的是非阻塞send,若为阻塞send,则一定等待所有数据拷贝至缓冲区才返回,因此阻塞send返回值必定与len相等);成功时,返回拷贝的字节数,失败返回-1。当本地与不同目的地址通信时,只需指定目的地址,可使用同一个UDP套接口描述符sockfd,而TCP要预先建立连接,每个连接都会产生不同的套接口描述符,体现在:客户端要使用不同的fd进行connect,服务端每次accept产生不同的fd。原创 2023-11-29 21:41:29 · 234 阅读 · 0 评论 -
Linux 线程
当函数返回时,被等待线程的资源被收回。retval: 用户定义的指针,用来存储被等待线程的返回值。现象:在执行过程中,上述数据是一次性打印的,不是一个个蹦出来的,这是因为linux是有缓冲的,频繁的输入输出会耗费资源,降低性能,所以linux会等待一批数据,然后一次性输出一批数据。第一个参数是线程的类型,第二个参数是线程的属性,第三个是函数指针(线程的入口函数),第四个是给函数指针的参数。进程的资源对进程中的线程是共享的,当线程对进程中的资源进行修改时,如果不对线程的执行的顺序加以控制,会导致数据的混乱。原创 2023-11-09 17:31:41 · 215 阅读 · 0 评论 -
Linux 进程的管道通信
进程之间的通信:Linux环境下,进程地址空间相互独立,每个进程各自有不同的用户地址空间。任何一个进程的全局变量在另外一个进程中都看不到,所以进程之间不能相互访问,要交换数据必须通过内核。如图,在内核中开辟一块缓冲区,进程1把数据从用户空间拷贝到内核缓冲区,进程2在从内核缓冲区中把数据读走,内核提供的这种机制称为进程间通信IPC(InterProcess Communication)当父进程使用pipe创建管道之后,一般需要再fork一个子进程,然后通过管道实现父子进程之间的通信。管道实现程序之间的通信。原创 2023-11-07 14:29:19 · 161 阅读 · 0 评论 -
c语言 char* 和char[]的返回值
以上代码是可以正确运行的,因为name1为静态局部变量,虽然fun函数结束后其作用域消失,但是其name1存储在静态存储区,并没有随着作用域一起消亡,所以返回的是一个有效的地址。:静态局部变量的作用域与局部变量的作用域是一样的,都是当定义这个局部变量的那个函数或者语句块结束时候作用域结束。静态全局变量在声明他的文件之外的其他文件是不可见的,仅从定义变量的开始位置到文件结尾可见。使用:在局部变量前加static关键字,修饰局部变量为静态局部变量。类型赋值,如果非要赋值,可以使用。:静态全局变量的存储位置在。原创 2023-10-23 14:29:34 · 406 阅读 · 0 评论 -
Linux 进程操作
操作系统通过识别每一个进程的pid来识别每一个进程,pid在进程中是唯一的,可以重复利用(比如说前一个为pid=11的进程死掉了,那么pid=11的这个进程就可以分配给其他进程使用了:当pid达到最大限制时,内核会从头开始查找闲置的pid并使用最先找到的那一个作为新进程的id)以上的程序结果显示的是子进程先执行,而后父进程开始执行,但是实际上,在执行了fork之后,父进程与子进程都是同时存在的,也就是。一个程序的执行称为一个进程,所有的代码都是在进程中执行的,进程是操作系统资源分配的基本单位。原创 2023-10-19 15:43:54 · 356 阅读 · 0 评论 -
操作系统 内存对齐
pragma pack (n):让变量强制按照 n 的倍数进行对齐,并会影响到结构体结尾地址的补齐(详见四的通常情况下关于结尾地址补齐的描述)。对于数组成员:比如 char a[5],它的对齐方式和连续写 5 个 char 类型变量是一样的,也就是说它还是按一个字节对齐。首先需要明确,cpu是按照块来访问内存的,根据不同的平台,块的大小不同,通常是按照2的次方倍字节进行数据读取。对于标准数据类型(内建数据类型),内存地址是该种数据类型的整数倍,如int类型,地址要是4字节的整数倍;原创 2023-10-14 17:35:47 · 265 阅读 · 0 评论 -
Linux gcc和make学习
用户自己定义的变量叫做用户自定义变量,makefile的变量是没有类型的,直接创建变量的名字然后给其赋值即可# 正确的定义自定义变量 变量名=变量值在给makefile的变量赋值之后,可以使用$(变量的名字)来将变量的值取出来# 用户自定义变量# 定义一个变量# 规则1app:$(obj)CC:默认值为 cc ,是gcc的意思,一般用来编译c程序CXX:默认值为 g++,一般用来编译c++程序CFLAGS:c语言编译器的编译选项,没有默认值,要用户自己赋值# 预定义变量# 定义变量。原创 2023-10-13 14:50:05 · 722 阅读 · 0 评论 -
Linux C文件操作
使用fgetc或者fputc的时候,它底层的调用还是调用了read和write,但是在读取的时候做了一个系统的优化,也就是一次性读取了多个字节的内容,表面上看起来只读取一个字符,实际上底层中读取的是多个字节的字符。文件的属性信息与文件的实体不是存在在一个位置上的,把文件的属性信息存放在一个位置,这一类的文件叫做目录文件,也就是windows上的文件夹。表示从指定的文件中读下一个字符,返回一个没有符号的字符,或者EOF(end of file),需要读的文件必须是读或者读写的方式打开的,并且文件存在。原创 2023-10-12 21:49:20 · 514 阅读 · 0 评论 -
linux shell程序设计
讨论:程序的位置参数和函数的位置参数是不同的,①程序的参数指的是整一个程序(命令的)参数,比如在命令行中输入ls -la ,该命令中的 -la 就是该命令的第一个参数,用 $1 表示;讨论:正则表达式可以用来匹配符合某一种规则的字符,以case语句中,需要匹配no的各种大小写的可能性,可以使用正则匹配 [Nn][Oo] | [Nn] ,这样可以使得条件表达式更加简洁。注意,程序的位置参数与函数内的位置参数不是一个概念,出现在函数调用中的。表示的是程序的位置参数,与在命令行中的第一个参数是一样的;原创 2023-10-07 11:39:46 · 155 阅读 · 0 评论 -
文件权限linux
Linux文件权限命令一、查看文件的权限用 ll 或者 ls -l这两种命令的区别在于:ll会列出该文件下的所有文件信息,包括隐藏的文件,而ls -l只列出显式文件。例如:二、读权限第一段:第1位,表示文件类型(看红色框框)-为:表示文件;d为:表示文件夹;l为:表示链接文件,可以理解为 windows中的快捷方式(link file);b为:表示里面可以供存储周边设备;c为:表示里面为一次性读取装置。第二段:第2,3,4位,拥有者具有的权限。类似于windows中的所有原创 2021-05-19 20:19:37 · 8120 阅读 · 3 评论 -
Linux下使用vi新建文件保存文件时遇到错误:E212: Can‘t open file for writing
出现E212: Can't open file for writing的问题是由于权限问题导致的,解决方法有以下思路:1、使用root进行登录,然后再操作。2、在使用命令时,前面加sudo,比如说sudo vi hello.txt3、如果是多级文件夹的文件时,由于这个文件夹没有创建,所以要先创建这个文件夹,再来操作这个文件。...原创 2021-07-23 10:53:05 · 3089 阅读 · 1 评论 -
Linux 进程之间的通信IPC
进程间通信(IPC,Interprocess communication)是一组编程接口,让程序员能够协调不同的程序进程,使之能在一个操作系统里同时运行。这使得一个程序能够在同一时间里处理许多用户的要求。因为即使只有一个用户发出要求,也可能导致一个操作系统中多个进程的运行,进程之间必须互相通话。IPC接口就提供了这种可能性。每个IPC方法均有它自己的优点和局限性,因此,对于单个程序而言使用所有的IPC方法是不常见的。进程间通信主要包括系统IPC(进程间通信)(包括消息队列,信号,共享存储), 套接字(SO原创 2021-07-27 14:55:09 · 1466 阅读 · 1 评论 -
Linux vi编辑器的使用
②使用vi filename 可以进入vi ,这个时候vi处于命令模式,在命令模式下,可以使用i 进入到编辑模式,表示从当前光标位置开始插入;讨论:①在命令模式下,vi使用/+搜索词对文件进行匹配,匹配成功后,可以使用小写n对匹配项从上而下移动,或者使用大写N对匹配项从下而上移动;②在命令模式下,可以使用s命令对光标所在位置的字符进行编辑,编辑后退出编辑模式,使用n在匹配项中移动,再使用 . 来重复上一条编辑指令;可以对光标所在位置的字符编辑成所需替换的字符,使用n或者N在搜索结果中移动光标,再使用。原创 2023-09-30 15:49:18 · 340 阅读 · 0 评论 -
Linux 常用命令
表示将该符号前面的执行结果,作为输入的参数传递给该符号后面的命令(管道),该命令的意思是,在当前目录中寻找所有的p开头的.c文件,并给把这些文件中的include都找到。可以使用more命令实现文件的逐屏显示,more命令会显示文件的阅读的进度,在文件中敲回车可以阅读整个文件;命令对目录以及目录下的文件进行打包,打包与压缩的概念不同,打包是把所有的文件装到一起变成一个文件,压缩是把一个文件合理摆放腾出更多的空间。当运行的进程状态不对时,可以使用ps查看进程的运行情况,使用kill来杀死进程(终止进程)原创 2023-09-27 11:10:45 · 834 阅读 · 0 评论 -
操作系统导论
操作系统的概念操作系统是控制和管理计算机系统内各种硬件和软件资源、有效地组织多道程序运行的系统软件(或程序集合),是用户与计算机之间的接口。1、对操作系统的认识操作系统是一种系统软件操作系统的基本功能是控制和管理系统资源、以及使得程序有序进行操作系统是对硬件系统的一种扩张2、操作系统的主要功能(一)进程管理功能——包括对进程的控制和进程的通信问题(二)处理机的调度功能——协调的将处理机时间公平、有效的分配给进程使用(三)存储管理功能——内存分配和地址映射(四)设备管理功能——比如i原创 2021-05-29 21:41:26 · 1192 阅读 · 0 评论 -
操作系统 段页式存储管理
一、引入★分页系统是以页面作为内存分配的基本单位,能有效地提高内存利用率,但信息共享等不方便;★分段系统是以段作为内存分配的基本单位,它能够更好地满足用户多方面的需要(信息共享、动态链接等),但采用分区方式管理物理内存,仍然存在碎片问题;★段页式存储管理方式是对两种存储管理方式的“各取所长”,既具有分段系统的便于实现、分段可共享、易于保护、可动态链接等一系列优点,又能像分页系统那样,很好地解决内存的外部碎片问题。二、基本思想——先分段,再分页地址空间划分:作业的地址空间仍按其逻辑结构分段。每原创 2021-04-10 18:22:14 · 7706 阅读 · 1 评论 -
操作系统 分段管理
一、分段式存储管理的引入:1、信息共享问题:没有在逻辑上划分程序,有时在一个页面中会包含毫不相关的两段代码,使得信息共享不方便。2、动态链接问题:一个大的程序可能包含数百、数千个程序模块构成,很多用户希望在程序执行过程中装入、动态连接所需模块,降低对内存需求,提高装载效率,而分区管理和页式管理只能采用静态链接。二、基本思想把程序按内容或过程(函数)关系分成段,每段有自己的名字,每个段一个地址空间在装入内存后,每个段占用一片连续的存储区域,而各段之间可以不连续,可按段进行存储共享和保护。分段存储原创 2021-04-10 17:43:01 · 2407 阅读 · 0 评论 -
操作系统 分页存储
分页存储管理方式一、分页管理存储方式可以解决“可用存储总容量足够大”但是“大作业不能运行”的情况① 把装入模块(即链接后的可执行程序)切分为一系列等长的片段,每个片段称为一个页面(页面长度为512B、1KB、2KB、4KB等,小于动态分区的很多碎片),页号依次为0、1、2、…,(具有n-1个页面的进程大小是多少字节)② 也把系统物理内存划分为一系列等长的片段,每个片段称为一个物理块(或一个页帧),物理块长度与页面长度相同,块号为0、1、2、…③ 用户程序运行时,操作系统将其各个页面装载到一系列任意原创 2021-04-10 15:26:21 · 2580 阅读 · 2 评论 -
操作系统 内存分配-分区
单一连续存储管理将内存分成两个连续的区域:系统区和用户区系统区只能是留给系统程序执行,用户区每次只能分配给一道程序固定分区管理1、等区划分缺乏灵活性,程序过大装不进去,程序过小又浪费空间2、非等区划分相对具有灵活性内存的分配:建立一个分区说明表,每一个表标注状态已经分配的不能被重新分配,一直到分配的内存被释放才可以又被分配动态分区分配系统存储器不预先划分分区,在每次作业装入时,根据作业大小要求,从可用存储空间中切一块大小与所要求相近的存储区分配给作业。一、内存分配——基于顺序搜索原创 2021-04-10 14:04:37 · 6858 阅读 · 3 评论 -
操作系统 程序装入与链接
程序原创 2021-04-08 22:34:52 · 1310 阅读 · 0 评论 -
操作系统 死锁问题
资源分类(1)可抢占资源指某进程在获得这类资源后,该资源可以再被其他进程或系统抢占。对于这类资源是不会引起死锁的。 CPU和主存均属于可抢占性资源。(2)不可抢占资源一旦系统把某资源分配给该进程后,就不能将它强行收回,只能在进程用完后自行释放。磁带机、刻录机、打印机、共享变量等也都属于不可抢占性资源。(3)可消耗资源又称为临时性资源,它是在进程运行期间,由进程动态的创建和消耗的,如进程间通信的消息、信号量等。不可抢占资源和可消耗资源会导致死锁问题死锁产生的原因死锁的起因,通常是源于多个进原创 2021-04-01 19:06:01 · 1856 阅读 · 0 评论 -
操作系统处理机的调度问题
为什么需要调度因为操作系统不是只有一个进程的,一般来说进程的数量会比处理器的数量多。假设有x个进程,就会有x!种的调度方法。这个时候,选择一种调度方法就很有必要。作业的基本概念⑴作业:指在一次应用业务处理过程中,用户提交给OS处理的一个独立任务,用户通常通过作业说明书或特定控制命令来说明作业执行的控制方式。⑵作业步:在作业运行期间,经过的若干个相对独立又相互关联的顺序加工步骤称为作业步,各作业步之间存在着相互联系,往往是上一个作业步的输出作为下一个作业步的输入。(3)作业与作业步示例:编程实验作业原创 2021-03-23 21:38:48 · 3499 阅读 · 7 评论 -
操作系统进程同步(案例说明一) 学习笔记
一、生产者-消费者问题问题说明:有一群生产者进程在生产产品,并将这些产品提供给消费者进程去消费。为使生产者进程与消费者进程能并发执行,在两者之间设置了一个具有n个缓冲区的缓冲池,**生产者进程将它所生产的产品放入一个缓冲区中;消费者进程可从一个缓冲区中取走产品去消费。**尽管所有的生产者进程和消费者进程都是以异步方式运行的,但它们之间必须保持同步,即不允许消费者进程到一个空缓冲区去取产品;也不允许生产者进程向一个已装满产品且尚未被取走的缓冲区中投放产品。分析:...原创 2021-03-17 20:23:51 · 841 阅读 · 0 评论 -
操作系统 同步问题(概念说明)学习笔记
进程同步的基本概念一、两种形式的制约关系间接相互制约关系:同处于一个系统中的进程必然共享某种资源,如CPU、I/O设备等,间接相互制约即源于资源共享。又称为“互斥”直接相互制约关系:同一个任务的多个进程,这种制约源于进程之间的合作关系。又称为"同步“在并发程序执行下,由于存在上面两类相互制约关系,进行在运行过程中是否能得到处理机与执行的速度并不能由进程自身控制(异步性)会产生对共享变量或共享资源不正确的访问次序,造成“与时间有关的错误”,所以必须对进程的执行进行协调,保证结果的正确。二、临界资原创 2021-03-17 09:46:26 · 1768 阅读 · 0 评论