1.Linux进程和线程的目录源码基础与管理
2.mysql源码安装升级
Linux进程和线程的基础与管理
一.进程的基本概念程序是为了完成某种任务而设计的软件,比如vi是目录源码程序。什么是目录源码进程呢? 进程就是运行中的程序。一个运行着程序,目录源码可能有多个进程。目录源码比如Web服务器是目录源码c 影像处理 源码Apache服务器,当管理员启动服务后,目录源码可能会有好多人来访问,目录源码也就是目录源码说许多用户同时请求working)
#3 - full multiuser mode
#4 - unused
#5 - X
#6 - reboot (do not set initdefault to this)
#
//表示当前缺省运行级别为5,启动系统进入图形化界面
id:5:initdefault:
//启动时自动执行/etc/rc.d/rc.sysinit脚本
#system initialization.
si::sysinit:/etc/rc.d/rc.sysinit
:0:wait:/etc/rc.d/rc 0
:1:wait:/etc/rc.d/rc 1
:2:wait:/etc/rc.d/rc 2
:3:wait:/etc/rc.d/rc 3
:4:wait:/etc/rc.d/rc 4
//当运行级别为5时,以5为参数运行/etc/rc.d/rc脚本,目录源码init将等待其返回
:5:wait:/etc/rc.d/rc 5
:6:wait:/etc/rc.d/rc 6
//在启动过程中允许按[ctrl-alt-delete]重启系统
#trap ctrl-alt-delete
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
#
..................................
#
//在运行级别2、目录源码3、目录源码4、目录源码5以上ttyX为参数执行/sbin/mingetty程序,目录源码打开ttyX终端用于用户登录,目录源码如果进程退出则再次运行mingetty程序
#run gettys in standard runlevels
1::respawn:/sbin/mingetty tty1
2::respawn:/sbin/mingetty tty2
3::respawn:/sbin/mingetty tty3
4::respawn:/sbin/mingetty tty4
5::respawn:/sbin/mingetty tty5
6::respawn:/sbin/mingetty tty6
//在级别5上运行xdm程序,提供xdm图形方式登录界面,并在退出时重新执行
x:5:respawn:/etc/x/prefdm -nodaemon
#run xdm in runleverl 5
Inittab配置文件每行的基本格式如下。
id:runlevels:action:procees
其中某些部分可以为空,下面我们逐一介绍。购吧源码
1.id
1~2个字符,配置行的惟一标识,在配置文件中不能重复。
2.runlevels
配置行适用的运行级别,在这里可填入多个运行级别,比如或者等。
Linux有7个运行级别:
0:关机
1:单用户字符界面
2:不具备网络文件系统(NFS)功能的多用户字符界面
3:具有网络功能的多用户字符界面
4:保留不用
5:具有网络功能的图形用户界面
6:重新启动系统
3.action
init有如下几种行为,如下表所示。
init行为
行为
描述
respawn
启动并监视第4项指定的process,若process终止则重启它
wait
执行第4项指定的process,并等待它执行完备
once
执行第4项指定的process
boot
不论在哪个执行等级,系统启动时都会运行第4项指定的process
bootwait
不论在哪个执行等级,系统启动时都会运行第4项指定的process,且一直等它执行完备
off
关闭任何动作,相当于忽略该配置行
ondemand
进入ondemand执行等级时,执行第4项指定的process
initdefault
系统启动后进入的执行等级,该行不需要指定process
sysinit
不论在哪个执行等级,系统会在执行boot及bootwait之前执行第4项指定的process
powerwait
当系统的供电不足时执行第4项指定的process,且一直等它执行完备
powerfailnow
当系统的vue源码浅析供电严重不足时执行第4项指定的process
ctrlaltdel
当用户按下ctrl+alt+del 时执行的操作
kbrequest
当用户按下特殊的组合键时执行第4项指定的process,此组合键需在keymaps文件定义
4.process
Process为init执行的进程,这些进程都保存在目录/etc/rc.d/rcX中,其中的X代表运行级别,rc程序接收X参数,然后运行/etc/rc.d/rc.X下面的程序。使用如下命令可以查看/etc/rc.d目录内容。
复制代码
代码如下:
#ls –l /etc/rc.d/
total
drwxr-xr-x 2 root root 3/ : init.d
-rxwr-xr-x 1 root root -3- rc
drwxr-xr-x 2 root root 3/ : rc0.d
drwxr-xr-x 2 root root 3/ : rc1.d
drwxr-xr-x 2 root root 3/ : rc2.d
drwxr-xr-x 2 root root 3/ : rc3.d
drwxr-xr-x 2 root root 3/ : rc4.d
drwxr-xr-x 2 root root 3/ : rc5.d
drwxr-xr-x 2 root root 3/ : rc6.d
-rxwr-xr-x 1 root root -3- rc.local
-rxwr-xr-x 1 root root -3- rc.sysinit
…………
使用如下命令查看/etc/rc.d/rc5.d的内容。
复制代码
代码如下:
#ls –l /etc/rc.d/rc5.d
这些文件都是符号链接,以S打头的标识启动该程序,而以K打头的标识终止该程序,后面的数字标识执行顺序,越小越先执行,剩下的标识程序名。系统启动或者切换到该运行级别时会执行以S打头的程序,系统切换到该运行级别时会执行以K打头的程序。
这个目录下的程序可通过chkconfig程序进行管理,当然这个目录下的程序需要符合一定规范,如果了解shell编程,可以查看这些符号链接所指向的ecjia 源码分析程序的源码。
init也是一个进程,和普通的进程具有一样的属性。比如修改了/etc/inittab,想让修改马上生效,可通过运行“kill-SIGHUP 1”来实现,也可通过运行“init q”来实现。
八.Linux的线程简介
1.Linux线程的定义
线程(thread)是在共享内存空间中并发的多道执行路径,它们共享一个进程的资源,如文件描述和信号处理。在两个普通进程(非线程)间进行切换时,内核准备从一个进程的上下文切换到另一个进程的上下文要花费很大的开销。这里上下文切换的主要任务是保存老进程CPU状态并加载新进程的保存状态,用新进程的内存映像替换进程的内存映像。线程允许你的进程在几个正在运行的任务之间进行切换,而不必执行前面提到的完整的上下文。另外本文介绍的线程是针对POSIX线程的,也就是Pthread。也因为Linux对它的支持最好,相对进程而言,金昌软件源码线程是一个更加接近于执行体的概念,它可以与同进程中的其他线程共享数据,但拥有自己的栈空间,拥有独立的执行序列。在串行程序基础上引入线程和进程是为了提高程序的并发度,从而提高程序运行效率和响应时间。也可以将线程和轻量级进程(LWP)视为等同的,但其实在不同的系统/实现中有不同的解释,LWP更恰当的解释为一个虚拟CPU或内核的线程。它可以帮助用户态线程实现一些特殊的功能。Pthread是一种标准化模型,它用来把一个程序分成一组能够同时执行的任务。
2.什么场合使用Pthread,即线程
(1)在返回前阻塞的I/O任务能够使用一个线程处理I/O,同时继续执行其他处理任务。
(2)在有一个或多个任务受不确定性事件,比如网络通信的可获得性影响的场合,能够使用线程处理这些异步事件,同时继续执行正常的处理。
(3)如果某些程序功能比其他的功能更重要,可以使用线程以保证所有功能都出现,但那些时间密集型的功能具有更高的优先级。
以上三点可以归纳为:在检查程序中潜在的并行性时,也就是说在要找出能够同时执行任务时使用Pthread。上面已经介绍了,Linux进程模型提供了执行多个进程的能力,已经可以进行并行或并发编程,可是纯种能够让你对多个任务的控制程序更好、使用资源更少,因为一个单一的资源,如全局变量,可以由多个线程共享。而且,在拥有多个处理器的系统上,多线程应用会比用多个进程实现的应用执行速度更快。
3.Linux进程和线程的发展
年1月发布的Linux 2.2内核中,进程是通过系统调用fork创建的,新的进程是原来进程的子进程。需要说明的是,在2.2.x版本中,不存在真正意义上的线程(thread)。Linux中常用的线程Pthread实际上是通过进程来模拟的。也就是说Linux中的线程也是通过fork创建的,是“轻”进程。Linux 2.2只默认允许个进程/线程同时运行。高端系统同时要服务上千个用户,所以这显然是一个问题,它一度是阻碍Linux进入企业级市场的一大因素。
年1月发布的Linux 2.4内核消除了这个限制,并且允许在系统运行中动态调整进程数上限。因此,进程数现在只受制于物理内存的多少。在高端服务器上,即使安装了MB内存,现在也能轻而易举地同时支持1万6千个进程。
年月发布的2.6内核,进程调度经过重新编写,去掉了以前版本中效率不高的算法。以前,为了决定下一步要运行哪一个任务,进程调度程序要查看每一个准备好的任务,并且经过计算机来决定哪一个任务相对来更为重要。进程标识号(PID)的数目也从升到亿。内核内部的大改变之一就是Linux的线程框架被重写,以使NPTL(Native POSIX Thread Library)可以运行于其上。对于运行负荷繁重的线程应用的Pentium Pro及更先进的处理器而言,这是一个主要的性能提升,也是企业级应用中的很多高端系统一直以来所期待的。线程框架的改变包含Linux线程空间中的许多新的概念,包括线程组、线程各自的本地存储区、POSIX风格信号,以及其他改变。改进后的多线程和内存管理技术有助于更好地运行大型多媒体应用软件。
4.总结
线程和进程在使用上各有优缺点:线程执行开销小,但不利于资源的管理和保护;而进程正相反。同时,线程适合于在对称处理器的计算机上运行,而进程则可以跨机器迁移。另外,进程可以拥有资源,线程共享进程拥有的资源。进程间的切换必须保存在进程控制块PCB(Process Control Block)中。同一个进程的多个线程间的切换不用那么麻烦。最后一个实例来作为本文的结束:当你在一台Linux PC上打开两个OICQ,每一个OICQ是一个进程;而当你在一个OICQ上和多人聊天时,每一个聊天窗口就是一个线程。
mysql源码安装升级
进行MySQL源码小版本升级,从5.7.升级至5.7.,遵循以下步骤以确保平稳过渡与系统稳定。
准备阶段,首先获取新版本MySQL的源码包。
关闭MySQL服务,避免升级过程中影响现有数据库操作。
备份原MySQL目录,以防升级过程中出现意外,便于及时恢复。
编译新版本的MySQL源码,确保其与当前环境兼容且无误。
验证升级成功,通过检查MySQL版本信息确认已成功切换至新版本。
启动新版本的MySQL,确保服务恢复正常运行。
使用自动升级脚本进行简化操作,脚本文件名为mysql_update.sh。
将mysql_update.sh直接放置于MySQL源码包目录内。
执行脚本时,只需指定原MySQL安装目录作为参数,脚本将自动完成升级流程。
以上步骤提供了一种高效且安全的MySQL源码升级方式,确保升级过程流畅无阻,并维护数据库系统正常运行。