![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux
文章平均质量分 72
lishichengyan
zju过气涂鸦爱好者
展开
-
Linux基础:什么是Linux?GNU、自由软件、开源以及Linux安装
Linux在不同语境下的含义不同,一般指Linux内核(kernel),内核可以简单理解为操作系统的核心。除此之外,它也可以泛指任何与Linux相关的程序。GNU是一个项目,它是GNU's not Unix的“递归缩写”,真是一个一点也不幽默的名字。GNU倡导所谓的“free software”,翻译过来就是自由软件,自由软件的意思是说每个人都有使用、传播、修改软件的自由,它有自己的版权申明(原创 2017-07-04 18:34:43 · 4875 阅读 · 0 评论 -
【操作系统】虚拟内存+存储管理选择题
Chapter 9虚拟内存1、基本概念(1)定义:虚拟存储器是具有请求调入功能和置换功能,能仅把进程的一部分装入内存便可运行进程的存储管理系统,它能从逻辑上对内存容量进行扩充的一种虚拟的存储器系统(2)局部性原理:①时间局部性②空间局部性 2、Demand paging只有当进程需要这个页的时候才把它调入内存。 3、缺页EAT = (1 – p) x原创 2017-12-26 21:47:59 · 5959 阅读 · 1 评论 -
重新编译Linux内核踩的坑
比较有意义的一次实验,坑都写在讨论与心得里。实验目的学习重建Linux内核。学习Linux内核的系统调用,理解、掌握Linux系统调用的实现框架、用户界面、参数传递、进入/返回过程。阅读Linux内核源代码,通过添加一个简单的系统调用实验,进一步理解Linux操作系统处理系统调用的统一流程。了解Linux操作系统缺页处理,进一步掌握task_struct结构的作用。实验内容在现原创 2017-12-24 11:21:15 · 6281 阅读 · 2 评论 -
【操作系统】死锁
Chapter 7死锁 一、基本概念1、死锁:指多个进程因竞争共享资源而造成的一种僵局,若无外力作用,这些进程都将永远不能再向前推进2、死锁产生的必要条件:(1)互斥(2)占有并等待(3)不可抢占(4)循环等待 3、资源分配图请求边是进程出发的箭头指向资源,反过来是分配边。(1)没有环,没有死锁(2)有环:①每种类型的资源只有一个实例,有原创 2017-11-30 19:42:15 · 1710 阅读 · 0 评论 -
生产者消费者问题
这是进程/线程同步与互斥中最简单、最经典的一个例子,也被叫做“有限缓冲区”问题。假定现在有一个“有限缓冲池”(最讨厌这种fancy word-_-+,其实就是空间有限的一块地方吧),生产者负责往里面投放资源,消费者负责把资源拿走(这样的模型很常见,比如说打字,你就是一个生产者,负责往IO缓冲区写东西,处理这个缓冲区的程序就是消费者,负责把你输入的东西拿出来显示到屏幕上)。这里会出现几个问题:原创 2017-11-02 18:55:29 · 532 阅读 · 1 评论 -
【线程同步与互斥】条件变量
先上代码:#include#include#include#includepthread_mutex_t count_lock;pthread_cond_t count_nonzero;unsigned int count=0;//pthread_cond_wait会把线程阻塞在这里,同时释放锁//条件变量被其他线程激活以后会去竞争锁//竞争到了就再次加锁void pth原创 2017-11-02 18:40:01 · 192 阅读 · 0 评论 -
【线程同步与互斥】互斥锁(mutex)
在多线程访问共享数据的时候可能会发生冲突,例如:/*冲突的例子*/#include#include#include#includeint common_data=0;//公共数据 void increase_data(void* vptr){ //让common_data自增10次 //两个线程都来执行它,如果不冲突的话common_data最后会等于20 int v原创 2017-10-19 19:42:57 · 364 阅读 · 0 评论 -
Linux进程、线程中的常用函数
自己复习用,已经比较熟的就不多写了。1、进程相关的函数(1)getpid(2)getppid(3)进程创建:fork注意:子进程fork之后获得了父进程的数据空间、堆栈的复制品。(4)sleep(5)exec函数族这个比较复杂,有:execl、execv、execle、execve、execlp、execvp六个函数。l的意思是函原创 2017-10-19 19:32:16 · 480 阅读 · 0 评论 -
【操作系统】第二章小结
Chapter 2 Operating System Structures1)服务略2)接口CLI和GUI3)系统调用系统调用是kernel内部实现的,是操作系统为用户态进程和底层硬件提供的一组接口。而API是根据系统调用向程序员提供内核服务的编程接口。注意一个API不一定就对应了一个系统调用,很有可能一个API执行的功能需要多个系统调用来共同完成。使用AP原创 2017-10-04 09:55:04 · 485 阅读 · 0 评论 -
【操作系统】第一章小结
Chapter 1 Introduction1)什么是computer system?答:硬件(CPU、memory、I/O)、操作系统、应用程序、用户。2)从不同角度理解操作系统a、user view用户和硬件之间的接口b、system viewresource allocator, a control program(especially concerned wit原创 2017-10-03 11:44:58 · 454 阅读 · 0 评论 -
【操作系统】进程的状态切换
来谈一下自己的理解。任何进程都逃不脱的状态是new和terminated,就像人都要经历出生和死亡一样,这两个状态是短暂的,new一旦成功就会跳到ready态,ready态的进程会由scheduler调度进内存运行,也就是切换到running态,只要有ready态的程序,调度就会发生,也就是说如果一个操作系统中所有进程都准备好了但是却没有运行的话,那这个系统应该是有毛病的。running态的程原创 2017-10-10 12:01:11 · 771 阅读 · 0 评论 -
shell编程的一些注意事项
【会不定期更新】1、shell的变量什么时候是字符串,什么时候是整数?答:Shell会根据上下文判断出数值型的变量,并进行变量的算术运算和比较等数值操作。判断标准是变量中是否只是包含数字,如果变量只包含数字,则Shell认定该变量是数值型的,反之,Shell认定该变量是字符串2、什么时候需要引用变量,什么时候不需要?答:赋值的时候需要。条件判断(if语句)情况比较复杂,比如原创 2017-07-10 09:27:44 · 266 阅读 · 0 评论 -
Linux常用命令行
【会不定期修改】Linux的有趣之处在于它的命令行,下面是一些常用的命令:1、获取帮助man、help、info(1)man是manual的意思,通过它可以获取某个命令的手册,例如$ man ls它会列出这个命令的name(名字)、synopsis(摘要)、description(描述,比较详尽的使用方法)、author(作者)、copyright(版权信息)、see also原创 2017-07-04 20:54:20 · 145 阅读 · 0 评论 -
【操作系统】Main Memory
chapter 8 Main Memory1、基本概念(1)逻辑地址和物理地址。(2)地址绑定:从逻辑地址到物理地址的映射.可能发生在三个时候: ①compile time ②load time ③execution time(3)MMU:把虚拟地址映射成物理地址的硬件设备(用户程序只关心逻辑地址,不会直接和物理地址打交道)。(4)动态重定位(原创 2017-12-09 20:54:28 · 5706 阅读 · 0 评论