精华内容
下载资源
问答
  • 用户模式
    万次阅读
    2018-04-02 09:15:59

    内核模式和用户模式

    tags: 内核模式 用户模式


    总是发现在要讲解一个问题的时候不得不去先讲解另一个问题。比如要想彻底弄明白ULT和KLT,则需要先明白他们工作的模式。ULT是不需要在内核模式和用户模式之间切换的,KTL是需要的。所以不得不先说说内核模式和用户模式。

    先来引导一下:

    用户模式和内核模式区分主要是因为,为了计算机系统的正常安全运行,有些硬件资源(比如中断装置)和特权指令是不可以对用户进程开放的,所以区分了两种模式。

    下面是两种模式切换过程:

    • 用户模式到内核模式:
      由中断/异常/系统调用中断用户进程执行而触发 。
      包括如下:
      1.处理器模式转为内核模式
      2.保存当前进程的PC/PSW值到核心栈
      3.转向中断/异常/系统调用处理程序

    • 内核模式到用户模式
      OS执行中断返回指令将控制权交还用户进程而触发。
      包括如下:
      1.从待运行进程核心栈中弹出PC/PSW值
      2.处理器模式转为用户模式

    本篇主要是为了下一篇讲解用户级别线程和内核级别线程而进行的简要说明。如需要了解详细的两种模式,请各位朋友自行查找。

    更多相关内容
  • 用户模式和内核模式(线程级)

    千次阅读 2021-03-31 11:44:49
    用户模式和内核模式区分主要是因为,为了计算机系统的正常安全运行,有些硬件资源(如:中断装置)和特权指令是不可以对用户进程开放的,所以区分了两种模式。 内核模式和用户模式 内核空间存放的是操作系统内核代码...

    用户模式和内核模式区分主要是因为,为了计算机系统的正常安全运行,有些硬件资源(如:中断装置)和特权指令是不可以对用户进程开放的,所以区分了两种模式。

    内核模式和用户模式

    内核空间存放的是操作系统内核代码和数据,是被所有程序共享的,在程序中修改内核空间中的数据不仅会影响操作系统本身的稳定性,还会影响其他程序,这是非常危险的行为,所以操作系统禁止用户程序直接访问内核空间。

    要想访问内核空间,必须借助操作系统提供的 API 函数,执行内核提供的代码,让内核自己来访问,这样才能保证内核空间的数据不会被随意修改,才能保证操作系统本身和其他程序的稳定性。

    内核模式(Kernel Mode):用户程序调用系统 API 函数称为系统调用(System Call);发生系统调用时会暂停用户程序,转而执行内核代码(内核也是程序),访问内核空间,这称为内核模式(Kernel Mode)。

    任务可以执行特权级指令,对任何I/O设备有全部的访问权,还能够访问任何虚地址和控制虚拟内存硬件。

    用户模式(User Mode):用户空间保存的是应用程序的代码和数据,是程序私有的,其他程序一般无法访问。当执行应用程序自己的代码时,称为用户模式(User Mode)。

    硬件防止特权指令的执行,并对内存和I/O空间的访问操作进行检查,可以通过操作系统中的某种门机制进入内核模式访问。

    内核模式和用户模式之间切换

    当运行在用户模式的应用程序需要输入输出、申请内存等比较底层的操作时,就必须调用操作系统提供的 API 函数,从而进入内核模式;操作完成后,继续执行应用程序的代码,就又回到了用户模式。

    用户模式就是执行应用程度代码,访问用户空间;内核模式就是执行内核代码,访问内核空间(当然也有权限访问用户空间)。

    下列表格展示了两种模式切换过程:

    用户模式到内核模式内核模式到用户模式
    由中断/异常/系统调用中断用户进程执行而触发 。
    1.处理器模式转为内核模式。
    2.保存当前进程的PC/PSW值到核心栈。
    3.转向中断/异常/系统调用处理程序。
    OS执行中断返回指令将控制权交还用户进程而触发。
    1.从待运行进程核心栈中弹出PC/PSW值。
    2.处理器模式转为用户模式。

    内核级线程(KLT)和用户级线程(ULT)

    进程是资源拥有的基本单位,进程切换需要保存进程状态,会造成资源的消耗。同一进程中的线程,共享进程获取的部分资源。在同一进程中,线程的切换不会引起进程切换,线程的切换需要的资源少于进程切换,可以提高效率。

    内核级线程(Kernel-Level Threads), KLT 也有叫做内核支持的线程。
    • 线程管理的所有工作(创建和撤销)由操作系统内核完成
    • 操作系统内核提供一个应用程序设计接口API,供开发者使用KLT
    用户级线程(User-Level Threads ULT)
    • 用户空间运行线程库,任何应用程序都可以通过使用线程库被设计成多线程程序。线程库是用于用户级线程管理的一个例程包,它提供多线程应用程序的开发和运行支撑环境,包含:用于创建和销毁线程的代码、在线程间传递数据和消息的代码、调度线程执行的代码以及保存和恢复线程上下文的代码。
    • 所以线程的创建,消息传递,调度,保存/恢复上下文都有线程库来完成。内核感知不到多线程的存在。内核继续以进程为调度单位,并且给该进程指定一个执行状态(就绪、运行、阻塞等)。
    内核级线程特点用户级线程的特点
    1.进程中的一个线程被阻塞,内核能调度同一进程的其他线程(就绪态)占有处理器运行。
    2.多处理器环境中,内核能同时调度同一进程的多线程,将这些线程映射到不同的处理器核心上,提高进程的执行效率。
    3.应用程序线程在用户态运行,线程调度和管理在内核实现。线程调度时,控制权从一个线程改变到另一线程,需要模式切换,系统开销较大。
    1.线程切换不需要内核模式,能节省模式切换开销和内核资源。
    2.允许进程按照特定的需要选择不同的调度算法来调度线程。调度算法需要自己实现。
    3.由于其不需要内核进行支持,所以可以跨OS运行。
    4.不能利用多核处理器优点,OS调度进程,每个进程仅有一个ULT能执行
    5.一个ULT阻塞,将导致整个进程的阻塞。

    jacketing技术可以解决用户级线程ULT一个线程阻塞导致整个进程阻塞。

    jacketing的目标是把一个产生阻塞的系统调用转化成一个非阻塞的系统调用。例如,当进程中的一个线程调用IO中断前,先调用一个应用级的I/O jacket例程,而不是直接调用一个系统I/O。让这个jacket例程检查并确定I/O设备是否忙。如果忙,则jacketing将控制权交给该进程的线程调度程序,决定该线程进入阻塞状态并将控制权传送给另一个线程(若无就绪态线程咋可能执行进程切换)。

    线程实现的组合策略

    可以看出,用户级线程和内核级线程都有各自的优点和缺点,在应用上主要表现为:

    • 用户级多线程对于处理逻辑并行性问题有很好的效果。不擅长于解决物理并发问题。
    • 内核级多线程适用于解决物理并行性问题。

    组合策略:
    由操作系统内核支持内核级多线程,由操作系统的程序库来支持用户级多线程,线程创建完全在用户空间创建,现成的调度也在应用程序内部进行,然后把用户级多线程映射到(或者说是绑定到)一些内核级多线程。

    编程人员可以针对不同的应用特点调节内核级线程的数目来达到物理并行性和逻辑并行性的最佳方案。
    在这里插入图片描述

    参考文章

    • https://blog.csdn.net/winterfeng123/article/details/79788714
    • https://blog.csdn.net/sinat_38104725/article/details/98474760
    • https://blog.csdn.net/winterfeng123/article/details/79784430
    • https://docs.microsoft.com/zh-cn/windows-hardware/drivers/gettingstarted/user-mode-and-kernel-mode
    • https://www.kanzhun.com/msh/post/1691.html

    关注公众号 ,专注于java大数据领域离线、实时技术干货定期分享!个人网站 www.lllpan.top

    在这里插入图片描述

    展开全文
  • 一、单用户模式的介绍 忘记root密码是非常常见的,但是在Linux系统下,解决该问题也非常容易。 在Linux系统中,单用户模式经常用于在更改root密码,即就是当我们在忘记了Linux的root密码时,可以通过单用户模式来...

    一、单用户模式的介绍
    忘记root密码是非常常见的,但是在Linux系统下,解决该问题也非常容易。
    在Linux系统中,单用户模式经常用于在更改root密码,即就是当我们在忘记了Linux的root密码时,可以通过单用户模式来进行更改root密码。
    注:因为在单用户模式下,是不需要输入登录密码的,因此,可以直接登录系统来修改root密码。

    二、进入单用户模式修改密码
    Centos6启动时读取的文件为:/etc/grub.cfg;
    Centos7启动时读取的文件为:/etc/grub2.cfg;

    三、单用户模式下修改密码的方法
    方法一:先重启系统【系统为:Centos6】
    在Linux系统启动时,内核启动顺序选择界面,进入系统欢迎界面按上下左右键进入GRUB界面;
    在这里插入图片描述
    进入此界面后,可以通过上下左右键进入GRUB界面;
    在这里插入图片描述
    2、在GRUB界面选择内核版本,按下‘e’键;
    在这里插入图片描述
    选择kernel内核这行,再按下‘e’键进入
    在这里插入图片描述
    3、在该界面中进行便捷,在最后一行输入’single’ 再按回车键返回
    在这里插入图片描述
    4、然后修改密码
    在这里插入图片描述
    执行passwd root 或者 passwd 都可以
    进行更改密码
    5、然后reboot进行系统重启

    方法二:先重启系统
    1、在Linux系统启动 内核启动顺序选择界面,按任意键让Linux引导启动停留内核选择阶段。
    在这里插入图片描述
    2、键入字母a
    在这里插入图片描述
    3、如下图,输入(空格)1 回车 进入单用户模式
    在这里插入图片描述
    4、输入完成之后,回车 进入单用户模式
    在这里插入图片描述
    5、进入单用户模式 修改密码,passwd root
    修改完毕后,可直接按下快捷键 Ctrl+D,即可启动系统

    三、Centos7系统下进入单用户模式
    1、进入GRUB界面,选择相应内核,按下‘e’键;
    在这里插入图片描述
    注:第一行为内核,第二行为紧急救援模式;

    2、进入内核界面后,找到Linux16这行;
    在这里插入图片描述
    在该行末尾加上init=/bin/sh
    按下,‘Ctrl + x’ 进入单用户模式;
    3、进入单用户后,重新挂载根目录,使其可写;
    执行

    mount -o remount,rw /
    

    在这里插入图片描述
    4、修改字符集(可选)
    Locale 查看当前字符集
    输入export LANG=en_US

    export LANG=en_US
    

    将终端的字符集改为英文
    5、修改密码
    passwd root
    6、当selinux防火墙启动时,修改密码后要创建文件
    touch /.autorelabel
    否则在系统重启时无法重启
    7、重启系统
    exec /sbin/init

    展开全文
  • CentOs 7 进入单用户模式修改root密码

    千次阅读 2022-03-17 17:12:06
    3.修改完毕后,按Ctrl-x,成功进入单用户模式。 4.执行命令,重启后root密码设置成功。 # 挂载根目录 mount -o remount,rw / # 设置root的密码 passwd root vi etc/selinux/config # 将enf

    1.启动系统,按上键或者下键,选择内核,按e进入编辑内核。

    2. 将linux 16后面的console内容删除(不删除可能卡住),删除rhgb quiet(看系统启动过程),在UTF-8后面加上init=/bin/sh。

    3.修改完毕后,按Ctrl-x,成功进入单用户模式。

    4.执行命令,重启后root密码设置成功。

    # 挂载根目录
    mount -o remount,rw /
    # 设置root的密码
    passwd root
    vi etc/selinux/config
    # 将enforcing改为disable,保存
    touch /.autorelabel
    # 重启系统
    exec /sbin/init

     

    展开全文
  • 交换机用户模式、特权模式、全局模式、端口模式

    万次阅读 多人点赞 2019-09-17 17:04:03
    1.用户模式  交换机启动完成后按下Enter键,首先进入的就是用户模式,在些用户模式下用户将受到极大的限制,只能用来查看一些统计信息。  Switch>2.特权模式  在用户模式下输入enable(可简写为en)命令就可以...
  • CentOS 8 单用户模式更改root密码

    千次阅读 2020-07-31 11:32:13
    CentOS 8 单用户模式更改root密码 疫情过去,很明显, 企业用户又带来了一堆麻烦事。老是动数据库,都快成了半个DBA了。加上公务员考试也算是过去了,那么接下来就得备考RHCE了。4月份的时候听说rhce7要结束了,...
  • Centos7系统进入单用户模式

    千次阅读 2020-09-18 17:42:19
    Centos7进入单用户模式跟之前的Centos6不一样了,下面是详细命令操作。 1.rd.break 方式(RHCE建议使用此方式) 在系统启动界面中选择对应的Core,按"e"进入修改界面 2.进入修改界面后下滑找到linux16这行,在此行...
  • 中标麒麟7.4进单用户模式

    千次阅读 2020-12-01 13:11:41
    4.在添加完成后,确认无误后使用快捷键(F10或者CTRL+x)开始进入单用户模式 输入root用户的密码即可。 5.由于我本次是磁盘挂载问题,所以vi /etc/fstab将外挂的磁盘先注释掉 6.之后重新启动即可。
  • Centos8 进单用户模式

    千次阅读 2020-06-02 17:43:11
    #开机启动菜单,按键e #找到ro 改为rw init=/sysroot/bin/sh ## #按键 Ctrl + x 进入 #切换根目录为sysroot chroot /sysroot/
  • 如何进入单用户模式(centos 6.5)

    千次阅读 2019-08-19 16:30:47
    虚拟机此时处在关机模式,开机后在下图界面4秒倒计时结束前,按 e 步骤2 此时会进入下图所示界面,接着按一下 e 步骤3 此时会进入下图所示的界面,选择第2项,接着按一下 e 步骤4 此时会进入下图所示的...
  • 今天做了备份还原,之后不知道怎么了 数据库处于单用户模式了,只能一个用户连接使用,其他用户没法连接网上很多说执行一个存储过程的,杀掉所有用户连接进程,然后改为多用户,我执行了后还是显示是单用户,当前某...
  • CentOS 6.x 单用户模式重置root密码

    千次阅读 多人点赞 2019-12-27 23:14:52
    本文关键字:Linux、系统运行级别、单用户模式、忘记root密码、修改用户密码。要进入到单用户模式我们首先要了解一下系统的启动过程,确认我们在哪一步下手。只有理解了才是真正掌握了,告别死记硬背。
  • 一、进入单用户模式 1、启动Ubuntu18操作系统并长按【Shift】键进入选项,选择 Advanced options for Ubuntu 这一项 按回车【Enter】键 注意:这个界面是可能出现的,如果没有出现,直接跳过这一步。 2、选中...
  • Centos7 进入单用户模式

    万次阅读 2018-11-28 17:57:14
    Centos7 进入单用户模式 当我们设置用户密码时,有可能会忘记,这时如何登陆呢,单用户模式就可以 首先我们进入开机界面,按e进行选择 会进入以下界面, 然后找到图中红线标注的该行,在行尾添加 init=/bin/...
  • 红帽进入单用户模式/救援模式

    千次阅读 2019-10-18 11:08:12
    文章目录前情提要:红帽进入单用户模式/救援模式 前情提要: 因为本人在虚拟机上做挂载磁盘的实验,新添加磁盘挂载目录,并把磁盘UUID与挂载点的对应关系写入了/etc/fstab中,之后我又把磁盘删除了,但没有修改/etc/...
  • UOS系统如何进入单用户模式

    千次阅读 2020-05-07 10:29:30
    一....1.开机进入 Grub界面 ,按 ‘E’键进入Grub 编辑模式 2.将 ro splash quiet 改为 rw singleinit=/bin/bash 3.按 crtl +x 或者 F10 进入启动 ,进行密码重置等操作 4.注意进入到单...
  • 银河麒麟忘记密码后进入单用户模式强制修改密码 通过修改引导参数重置root用户密码: 在银河麒麟高级服务器操作系统V10,可以通过设置引导参数的方式进入类似单用户的模式来实现重置root密码的行为: 首先我们在...
  • Linux的单用户模式、救援模式

    万次阅读 2018-09-21 11:03:26
    一、单用户模式 当我们忘记linux的root密码时,可以进入linux的单用户模式来更改root密码即可。 1、重启系统 在命令行下去运行init6 或 reboot可以直接重启系统,在虚拟机窗口3秒内,按回车键,然后输入 e 。 2、...
  • 在编辑页面的倒数第三行把`ro`换成`rw`,并且在最后添加`init=/bin/bash`命令,修改完后按`F10`进入Boot单用户模式3.进入Boot单用户模式后,输入`passwd root`修改root用户的密码,默认把密码改为`root`就行4.重启...
  • CentOS的单用户模式

    千次阅读 2018-08-22 23:01:18
    一、介绍 Linux系统下的单用户模式类似于Windows...二、单用户模式 在CentOS6中进入单用户模式  出现开机界面时立即按下“e”键,可以进入以下界面:  在上图所在界面下,再次按下“e”键,进入到以下界...
  • Linux如何进入单用户模式

    万次阅读 2019-04-09 10:27:18
    启动系统后,会出现下面这种情况,我们按(e)进入grub模式; 进入后,找到linux16开头这样,按“end”键到最后输入rd.break,按ctrl+x组合键继续; 进入系统后执行以下命令 #挂载/sysroot mount -o remount,rw /...
  • https://blog.csdn.net/kevindr/article/details/21609231
  • 用户模式进入方法( 银河麒麟 V10 ) 开机页面按 Shift键 进入该页面按 e键 在下方linux部分末尾添加 【 init=/bin/bash 】, 按 【 Ctrl + x 】 进入单用户页面 显示该页面说明进入成功 退出单用户...
  • 1、Ubuntu进入单用户模式,开机后长按“shift”,可以看到Ubuntu的“Recovery”选项,选中该选项(请勿“Enter”),此时按键盘的“e”键即可进入Esmsc编辑界面(下面会有提示操作的),将倒数第3或第4行(linux开头...
  • 理解用户模式和内核模式(译)

    千次阅读 2017-07-20 17:01:45
    原文来自:... 28 Aug 2015 ...###理解用户模式和内核模式 本文出处: http://blog.codinghorror.com/understanding-user-and-kernel-mode/ 绝大
  • CentOS 7.6进入单用户模式

    千次阅读 2019-05-08 14:43:35
    今天我们看看如何进入CentOS7.6单用户模式 1、重启服务器,在选择内核界面使用上下箭头移动 2、选择内核并按“e” 将“RO”改成 rw ,删除 rhgb quiet 添加 init=/bin/bash Ctrl + X 进入单用户模式 修改...
  • 工作上总有误操作的时候,一不小心改了某个系统...1、单用户模式是什么? 在Linux当中有一种模式叫单用户模式,这个模式类似于windows的安全模式,主要目的原本是用来维护Linux操作系统的,但是世界上有很多初学者没...
  • 可以尝试将数据库切换为单用户模式来操作。操作完之后再切换回多用户模式。 命令如下: alter database 数据库名 set Single_user --单用户 alter database 数据库名 set multi_user --多用户 或者 sp_dboption ...
  • CentOS7.6进入单用户模式

    千次阅读 2019-04-20 00:28:51
    1、在启动grub菜单,选择编辑启动选项 2、按键盘e键,来进入编辑界面 3、找到Linux 16那行,将ro改为rw ...4、按下 Control+x ,使用单用户模式启动 5、使用下面的命令访问系统 chroot/sysroot 6、重置...
  • SUSE12 sp1如何进入单用户模式

    万次阅读 2018-04-04 11:21:20
    SUSE12 SP1进入单用户模式 SUSE12进入单用户模式已不同于以往的版本,目前度娘上未找到解决方案。现在介绍下进入单用户模式的方法。1、 启动系统后不停按上下光标键,以防跳过,然后按e进入编辑状态: 2、 找到...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,807,812
精华内容 1,123,124
关键字:

用户模式