关键词:
-
一:Unix/Linux操作系统体系结构
- 类Unix操作系统体系结构分为两个状态 (1)用户态,(2)内核态
-
a)操作系统/内核:用来控制计算机硬件资源,提供应用程序运行的环境
-
我们写的程序,他要么运行在用户态,要么运行在内核态。一般来讲运行在用户态;
-
当程序要执行 一些特殊代码的时候,程序就可能切换到内核态,这种切换由操作系统控制,不需要人为介入;
-
换种角度理解:用户态:最外圈应用程序的活动空间;
-
-
b)系统调用:就是一些函数(系统函数),你只需要调用这些函数;
-
c)shell: bash(borne again shell[重新装配的shell]),它是shell的一种,linux上默认采用的是bash这种shell;
- 通俗一点理解,bash是一个可执行程序;主要作用是:把用户输入的命令翻译给操作系统(命令解释器);
-
d)用户态,内核态之间的切换
-
运行于用户态的进程可以执行的操作和访问的资源会受到极大限制(用户态权限小);
-
而运行在内核态的进程可以执行任何操作并且在资源的使用上没有限制(内核态权限大);
-
一个进程执行的时候,大部分时间是处于用户态下的,只有需要内核所提供的服务时 才会切换到内核态,内核态做的事情完成后, 又转回到用户态;
-
malloc();printf(); 这种状态在转换是操作系统干的,不需要我们介入;
-
-
疑问:为什么要区分用户态,内核态;
-
大概有两个目的:
-
(1)一般情况下,程序都运行在用户态状态,权限小,不至于危害到系统其它部分;当你干一些危险的事情的时候,系统给你提供接口,让你去干;
-
(2)既然这些接口是系统提供给你的,那么这些接口也是操作系统统一管理的;
-
资源是有限的, 如果大家都来访问这些资源,如果不加以管理,一个是访问冲突,一个是被访问的资源如果耗尽,那系统还可能崩溃;
-
系统提供这些接口,就是为了减少有限的资源的访问以及使用上冲突;
-
-
那么什么时候从用户态切换到内核态去呢?
-
a)系统调用,比如调用malloc();
-
b)异常事件,比如来了个信号;
-
c)外围设备中断:
-
-
二:signal函数范例
-
(1.1)可重入函数
-
严格意义:muNEfunc()函数不应该是一个可重入函数
- 所谓的可重入函数:就是我们在信号处理函数中 调用它 是安全的;
- 可重入函数:在信号处理程序中保证调用安全的函数,这些函数是可重入的并被称为异步信号安全的;
-
有一些大家周知的函数都是不可重入的,比如malloc(),printf();
-
在写信号处理函数的时候,要注意的事项:
-
a)在信号处理函数中,尽量使用简单的语句做简单的事情,尽量不要调用系统函数以免引起麻烦;
-
b)如果必须要在信号处理函数中调用一些系统函数,那么要保证在信号处理函数中调用的 系统函数一定要是可重入的;
-
c)如果必须要在信号处理函数中调用那些可能修改errno值的可重入的系统函数,那么 就得事先备份errno值(备份受信号函数影响的值),从信号处理函数返回之前,将errno值恢复;
-
-
2.2)不可重入函数的错用演示
- 一旦在信号处理函数中用了不可重入函数,可能导致程序错乱,不正常。。。。。
- 一旦在信号处理函数中用了不可重入函数,可能导致程序错乱,不正常。。。。。
- signal因为兼容性,可靠性等等一些历史问题;不建议使用(我们的策略,坚决不用),建议用sigaction()函数代替;
nginx_3_4
一:Unix/Linux操作系统体系结构类Unix操作系统体系结构分为两个状态(1)用户态,(2)内核态a)操作系统/内核:用来控制计算机硬件资源,提供应用程序运行的环境我们写的程序,他要么运行... 查看详情
nginx_3_6(代码片段)
一:信号集一个进程,必须能够记住这个进程当前阻塞了哪些信号我们需要“信号集”的这么一种数据类型(结构),能够把这60多个信号都表示下(即位图)。0000000000,0000000000,0000000000,00,0000000000,0000000000,000000000... 查看详情
mt226费马点两题
已知$z_1=2sqrt3i,z_2=3,z_3=-3,|z_3-z_4|=2sqrt3,$则$|z_1-z_4|+|z_2-z_4|$的最小值为_____提示:费马点最小,取$Z_4(0,sqrt3)$为$DeltaZ_1Z_2Z_3$的费马点.此时$|z_3-z_4|=2sqrt3$故$|z_1-z_4|+|z_2-z_4|ge3sqrt3$注:只有这些很对称 查看详情
Windows 应用商店应用着色器模型 4_0_level_9_3 和 VPOS
】Windows应用商店应用着色器模型4_0_level_9_3和VPOS【英文标题】:WindowsStoreappsShadermodel4_0_level_9_3andVPOS【发布时间】:2012-10-2110:10:26【问题描述】:要为Windows应用商店应用程序(和WindowsPhone8)构建着色器模型4_0_level_9_3,您需要使... 查看详情
latex数学公式
latextutorialz=frac{x}{y}[z=frac{x}{y}]C_1quad=quadc_2+c_4^3[C_1quad=quadc_2+c_4^3]$$y=sqrt{x_1^2+x_2^2+x_3^2+x_4^2}$$$$y=sqrt[3]{x_1^2+x_2^2+x_3^2+x_4^2}$$[y=sqrt{x_1^2+x_2^2+x_3^2+x_4^ 查看详情
nginx_3_2终端和进程的关系(代码片段)
一:终端和进程的关系(2.1)终端与bash进程ps-ef|grepbashpts(虚拟终端),每连接一个虚拟终端到乌班图linux操作系统,就会出现一个bash进程(shell[壳]),黑窗口,用于解释用户输入的命令bash=shell=命令... 查看详情
我可以直接从 XCode_3.1.4_iPhone_SDK_3.1.2 将应用程序部署到 iphone 3gs iOS 4
】我可以直接从XCode_3.1.4_iPhone_SDK_3.1.2将应用程序部署到iphone3gsiOS4【英文标题】:CanIdeployapptoiphone3gsiOS4fromXCode_3.1.4_iPhone_SDK_3.1.2directly【发布时间】:2010-08-1714:03:10【问题描述】:目前我在MacOSX10.5.8上安装了XCode_3.1.4_iPhone_SDK_3.1.2... 查看详情
linux安装redis(代码片段)
...0:00:00docker-ce-stable|3.5kB00:00:00epel|4.7kB00:00:00extras|2.9kB00:00:00nginx|2.9kB00:00:00updates|2.9kB00:00:00(1/7):epel/x86_64/group_gz|95kB00:00:00(2/7):epel/x86_64/updateinfo|1.0MB00:00:00(3/7):docker-ce-stable/x86_64/primary_db|45kB00:00:00(4/7):extras/7/x86_64/primary_db|205kB00:00:00(5/7)... 查看详情
python面向对象基础(代码片段)
....2类外面获取对象属性3.3类里面获取对象属性4魔法方法4.1__init__()4.1.1体验__init__()4.1.2带参数的__init__()4.2__str__()4.3__del__()5实战案例 查看详情
集合[1]
1#集合去重23list_1=[1,2,3,3,4,4,5,6,7,7]4list_1=set(list_1)5print(list_1,type(list_1))交集intersection()1#交集23list_2=set([2,4,6,7,9,7])45list_3=list_1.intersection(list_2)67print(list_3)并集union()1#并集2list_4 查看详情
phpstudy_php7_nginx环境配置
1,phpstudy安装包安装成功,默认环境为php5.4_apache环境2,右键单击phpstudy图标-》属性,单击兼容性选项卡-》更改所有用户设置,复选框选中“以兼容模式运行这个程序”,且下拉框选择windowsvista,复选框选中“以管理员身份运行... 查看详情
nginx_4_1(代码片段)
...认识范例//ps-eopid,ppid,sid,tty,pgrp,comm,stat,cmd|grep-E‘bash|PID|nginx’用kill发送USR1信号给进程(1)执行信号处理函数被卡住了10秒,这个时候因为流程回不到main(),所以main中的语句无法得到执行;(2)在触发... 查看详情
nginx_4_1(代码片段)
...认识范例//ps-eopid,ppid,sid,tty,pgrp,comm,stat,cmd|grep-E‘bash|PID|nginx’用kill发送USR1信号给进程(1)执行信号处理函数被卡住了10秒,这个时候因为流程回不到main(),所以main中的语句无法得到执行;(2)在触发... 查看详情
在 centos 上找不到 GLIBCXX_3.4.26
】在centos上找不到GLIBCXX_3.4.26【英文标题】:GLIBCXX_3.4.26notfoundoncentos【发布时间】:2020-07-1609:50:47【问题描述】:我在centos上遇到了这个问题:-/lib64/libstdc++.so.6:未找到版本“GLIBCXX_3.4.26”我拥有的Gcc版本是:-gcc版本7.2.0(GCC)如... 查看详情
系统综合实践_4(代码片段)
1、Docker-compose实现Tomcat+Nginx负载均衡nginx反向代理原理????客户端向反向代理发送请求,接着反向代理转发请求至目标服务器,并把获得的内容返回给客户端。nginx代理tomcat集群项目结构docker-compose.ymlnginx配置文件default.conf执行docke... 查看详情
Xcode 4.3.3 缺少 SenTestingKet.framework 导致未定义符号“_OBJC_METACLASS_$_SenTestCase”
】Xcode4.3.3缺少SenTestingKet.framework导致未定义符号“_OBJC_METACLASS_$_SenTestCase”【英文标题】:Xcode4.3.3missingSenTestingKet.frameworkcausesUndefinedsymbols"_OBJC_METACLASS_$_SenTestCase"【发布时间】:2012-08-2320:52:43【问题描述】:在我的M 查看详情
1.4.3编写自己的模块和包(代码片段)
...直接运行,还可以作为模块导入并使用其中的对象。通过__name__属性可以识别程序的使用方式。每个Python脚本在运行时都有一个__name__属性,如果脚本作为模块被导入,则其__name__属性的值被自动设置为模块名;如果脚本单独运行... 查看详情
无法下载 http://adcdownload.apple.com/ios/ios_sdk_4.2__final/xcode_3.2.5_and_ios_sdk_4.2_final.dmg
】无法下载http://adcdownload.apple.com/ios/ios_sdk_4.2__final/xcode_3.2.5_and_ios_sdk_4.2_final.dmg【英文标题】:cantdownloadhttp://adcdownload.apple.com/ios/ios_sdk_4.2__final/xcode_3.2.5_and_ios_sdk_4.2_final.dmg【发布时间】:2011-01-271 查看详情