Linux操作系统原理与应用--陈莉君chp3
- 格式:ppt
- 大小:815.00 KB
- 文档页数:41
3.3 系统和服务管理3.3.1 系统和服务管理器:systemd1.SysV init、Upstart init、systemdRHEL7采用systemd作为默认init程序,所以runlevel的概念基本上也就不存在了。
2.unitsystemd开启和监督整个系统是基于unit的概念。
unit是由一个与配置文件对应的名字和类型组成的(例如:avahi.service unit有一个具有相同名字的配置文件,是守护进程A vahi的一个封装单元)。
unit有以下7种类型:(1)service:(2)socket:(3)device:(4)mount:(5)automount:(6)target:(7)snapshot:3.systemd提供以下主要特性(1)使用socket的前卫的并行性能:(2)D-Bus激活策略启动服务:(3)提供守护进程的按需启动策略。
(4)保留了使用Linux cgroups进程的追踪功能:(5)支持快照和系统状态恢复:(6)维护挂载和自挂载点:(7)实现了各服务间基于依赖关系的一个精细的逻辑控制:4.systemd的主要工具(1)systemctl命令:查询和控制systemd系统和系统服务管理器的状态。
(2)journalctl命令:查询系统的journal(日志)。
(3)systemd-cgls命令:以树形列出正在运行的进程,可以递归显示Linux控制组内容。
3.3.2 监视和控制systemd的命令:systemctl起。
示例如下:3.3.3 改变目标(运行级别)systemd使用比sysvinit的运行级更为自由的target概念作为替代。
第3运行级用multi-user.target替代。
第5运行级用graphical.target替代。
runlevel3.target和runlevel5.target分别是指向multi-user.target和graphical.target的符号链接。
Linux内核入门学习方法作者介绍:刘冰,西安邮电大学研一在读,跟随陈莉君导师求学,刚刚踏入Linux内核的高山密林之中。
在学习Linux内核的过程中,由于Linux还在蓬勃的生长发展,内核还是会经常变化,我们会在实践学习,比如修改编译内核、调试系统时遇到许许多多的问题,想要快速的掌握一些相关的知识,并不是一件容易的事情。
我在学习内核的过程中摸索了一些方法出来。
找资料途径上,在信息量爆炸的今天,要学习一个经常变化的东西,比如新版Linux 内核的特性,主要是通过官方文档,或搜索引擎查找,找到的平台大部分都是博客等,可以根据它的排版、热度等来对其进行一个可信度的初判,可以自己通过实验进行验证,要敢于质疑;有了初步了解以后,要学习一个开源程序的实现、运行原理,可以找到它的源代码进行深入的学习,linux 内核的源代码可读性很好,里面有适量的代码注释和完善的接口注释,可以利用vscode软件对代码进行一个深入的追踪学习,我整理了一些vscode阅读代码的技巧:/XdoSy。
如果要学习的是一些沉淀了已久的知识,最好是根据一些相关评价,找一本经典教程来深入学习,比如学习数据结构,网上推荐最多的便清华大学严蔚敏老师写的《数据结构(C 语言版)》,上面宝贵的不仅是条理清晰的知识点,从中还能体会到作者更科学的思维方式。
书上代码对抽象性原则的躬身力行让我对C 语言有了全新的认识,将书里的算法尽可能的用代码实现一下使我受益良多。
理论方面,理解每个术语、英文缩写的含义和由来,有助于我们为总体目标的出现梳理出一个符合逻辑的产生发展过程,便于我们对总目标知识的掌握和记忆;实验方面,要与自己学的理论知识相结合,敢于创新,加深对理论的理解和对技术的掌握。
笔记找一个可以构建知识网络的笔记软件,可以将知识点连接起来,在出现以前学过的知识点时可以关联起来,温故知新,在获取新知识的同时也在不断巩固旧的知识。
推荐软件比如印象笔记、思源笔记等。
2011年3月第16卷第2期西 安 邮 电 学 院 学 报JO U RN AL O F XI A N U NI VERSIT Y O F P OST S A N D T EL ECO M M U N ICA T IO NS M ar.2011Vo l 16No 2收稿日期:2011 01 20基金项目:西安邮电学院中青年科研基金资助项目(103 0439)作者简介:梁琛(1978 ),女,讲师,硕士,研究方向:Linux 操作系统、嵌入式系统,E mail:mumulc @x ;陈莉君(1964 ),女,教授,硕士,研究方向:L inux 操作系统。
Linux 内核链表及其在虚拟文件系统中的应用梁 琛,陈莉君(西安邮电学院计算机学院,陕西西安 710121)摘要:为了提高代码的重用性,L inux 内核提供了一种抽象的双向循环链表结构。
通过对这种双向循环链表及其在Linux 虚拟文件系统中的应用进行分析,可以了解这种链表的巧妙之处。
这种链表可以将不同结构体类型的数据链接起来,并可以使用相同的链表操作,从而能有效地提高编程效率。
关键词:L inux 内核;链表;虚拟文件系统中图分类号:T P311.5 文献标识码:B 文章编号:1007 3264(2011)02 0029 05在C 语言程序中经常用到双向循环链表来组织数据,链表中每个结点的信息是定义在结构体类型中的,当使用的结构体类型不同时,需要创建不同的链表,并且需要为每一个链表编写插入、删除、查找等基本操作函数,但是通常链表这些基本操作的执行步骤是基本相同的,而只是由于结构体类型不同,就需要重写代码,花费程序员大量不必要的时间。
在Linux 内核源代码中也大量用到了这种数据结构,如果需要为每一个链表都编写基本操作函数,就会有大量的重复性代码。
在研究Linux 的虚拟文件系统时,发现其中使用的双向循环链表并不需要编写这样的冗余代码,而是提供了一种更好的使用方式,使得不同结构体类型的结点都可以通过这种链表链接起来,而且可以使用相同的链表操作,从而提高代码的重用性。
第3章处理器管理(1) 为什么程序并发执行会产生间断性特征,并失去封闭性和可再现性?解:之所以产生间断性特征是因为多个程序在并发执行时,需要为了完成同一项任务而相互合作,并发执行的程序间的这种相互制约导致了“暂停—执行—暂停”的间断性运行规律。
失去封闭性是因为程序在并发执行时,多个程序需要共享系统中的多种资源。
所以,这些资源的状态是由多个程序改变的,从而使程序的运行失去了封闭性。
失去可再现性是因为程序在并发执行时,由于失去了封闭性,从而导致其失去可再现性。
(2) 什么是进程?为什么要在操作系统中引入进程?解:进程是可并发执行且具有独立功能的程序在一个数据集合上的运行过程,它是操作系统进行资源分配和调度的基本单位。
“进程”概念是人们为了使程序能够并发执行,并且能对并发的程序加以描述和控制而引入的。
(3) 试从并发性、独立性、动态性上比较程序和进程的不同。
解:●并发性是进程的重要特征,同时也是OS 的重要特征。
引入进程的目的正是为了使其程序能和其它进程的程序并发执行,而程序是不能并发执行的。
●独立性是指进程实体是一个能独立运行的基本单位,同时也是系统中独立获得资源和独立调度的基本单位。
而对于未建立任何进程的程序,都不能作为一个独立的单位参加运行。
●动态性是进程最基本的特性,可表现为由创建而产生,由调度而执行,因得不到资源而暂停执行,以及由撤销而消亡,因而进程有一定的生命期;而程序只是一组有序指令的集合,是静态实体。
(4) 什么是PCB?它具有什么作用?为什么说PCB是进程存在的唯一标识?解:进程控制块(Process Control Block,PCB)是操作系统为了管理进程而设置的一个专门的数据结构,用它来记录进程的外部特征,描述进程的运动变化过程。
它的作用是使一个在多道程序环境下不能独立运行的程序(含数据),成为一个能独立运行的基本单位,一个能和其它进程并发执行的进程.因为系统利用PCB来控制和管理进程,所以PCB是系统感知进程存在的唯一标志。
Linux系统及应用一、课程说明课程编号:090219Z10课程名称:Linux系统及应用/Linux Operating System and Application课程类别:专业教育课程学时/学分:32/2先修课程:操作系统原理(或操作系统及安全)、计算机程序设计基础(C 语言)、数据结构适用专业:计算机科学与技术、信息安全教材、教学参考书:1. 陈莉君等.Linux操作系统原理与应用.北京:清华大学出版社,2006年2. 刘胤杰等.Linux操作系统教程.北京:机械工业出版社,2005年3. Amir Afzal.Unix初级教程,英文影印.北京:电子工业出版社,2002年4. 周巍松等.Linux系统分析与高级编成技术.北京:机械工业出版社,2000年5. 时培植等.Linux操作系统.北京:人民交通出版社,2000年6. 陈莉君.Linux操作系统内核分析.北京:人民邮电出版社,2000年二、课程设置的目的意义Linux作为一个开源计算机操作系统,广泛应用于服务器、桌面及嵌入式应用领域。
本课程为《操作系统原理》的后续课程,主要针对一个实际的计算机操作系统,一个方面通过对Linux内核的分析,加深学生对操作系统原理的理解,另一方面,帮助学生了解以UNIX为代表的操作系统的基本原理、基本技术和基本结构,了解在Linux平台上的开发应用过程,培养学生的分析问题和解决问题的实际能力。
三、课程的基本要求知识:了解Linux及Unix操作系统发展历史;了解Linux相关系统管理命令和shell程序设计;了解Linux操作系统的内核机制即内核任务和bottom half 队列的运行机理;将操作系统基本原理与Linux系统内核的进程管理、存储器管理、设备管理及文件系统的具体实现相结合;了解Linux字符设备和块设备驱动程序设计方法;了解Linux高级程序设计步骤及相关API。
能力:初步掌握Linux常用命令,并培养shell程序初级编程能力;通过对Linux内核的深入剖析,加深对操作系统原理的理解,并培养对Linux操作系统的系统级分析能力;初步掌握Linux内核模块编程、Linux简单字符设备和块设备编程能力;培养能够进行Linux系统级应用设计能力。