win和linux系统切换

2018-08-23 20:46:15 qq_42121640 阅读数 73499

最近升级了win10装了一块固态硬盘,决定装一个双系统玩玩,正好公司运维大哥没事干,在他的帮助下,加上上网看了看发现关于win10的双系统双硬盘安装教程大都语焉不详,要么就是从别处复制粘贴的,这里发一个我的安装步骤如下:

一:去官网下载Ubuntu系统  地址:https://www.ubuntu.com/download/desktop

问题来了,去哪里下载一个linux系统呢?很简单,去官网就可以直接下载最新的版本,这里我推荐下载LTS版本。

没错,只需要点这个绿色按钮就可以下载一个乌班图系统了!

二:使用UltraISO制作U盘启动安装系统。   UltraISO网址: https://cn.ultraiso.net/xiazai.html

很多小伙伴不知道该怎么装系统,这里我推荐用 UltraISO来制作U盘启动盘,简单有效,适合绝大多数小白。

是的,还是只需要点一下就够了!推荐土豪购买完全版,虽然我只是适用哈哈。

在制作启动盘时,管理员身份运行U1traISO,一定要点击“便捷启动”--“写入新的驱动器引导扇区”-“Syslinux”

 

才能保证系统盘可以被读取。亲测因为有些选项没点,造成安装失败。蓝瘦。

 

制作完成之后,就可以开始装系统啦!

 

三:可以在设置里找到磁盘管理,然后压缩出一个新的卷来准备存放我们的乌班图系统。不会的小伙伴可以参考https://jingyan.baidu.com/article/425e69e6bbd0c7be14fc164a.html 这里就不做太多描述了

四: 重启你的电脑,进入Bios,进行设置。
(1)将USB boot设为Enabled;
(2)将F12 boot menu设为Enable;

(3)将secure boot关闭。

如果不会的小伙伴请百度这一步,网上有很多教程。

五:设置完毕后保存退出。(一定要记得保存啊!)

然后就可以重启进行安装了。开机时候狂按F2(或者F12,F8联想好像是F8?)不知道可以百度一下自己的电脑如何进入。

 

 

 

 

 

 

 

 

 

2018-09-12 16:40:40 zhangdongren 阅读数 209724

今天为大家介绍如何才能启用Windows10下的Linux子系统,废话不多说,直接看步骤:

####启用开发者模式
打开设置
这里写图片描述

点击更新和安全
这里写图片描述

点击开发者选项
这里写图片描述

启用开发人员模式
这里写图片描述

####更改系统功能
使用win+X快捷键调出系统管理菜单后点击应用和功能,然后拉到底下,选择程序和功能
这里写图片描述

选中应用或关闭Windows功能
这里写图片描述

勾选适用于Linux的Windows子系统,然后确认并重启就可以了
这里写图片描述

####安装Linux系统
打开功能以后系统中其实还没有安装Linux,需要使用cmd完成安装。
首先按Win+R开启cmd命令输入框,然后输入lxrun /install /y来下载Linux系统(注意斜杠后面前要空一格,要不然无法识别命令)
这里写图片描述

好了,现在安装成功了,可以为所欲为了!

首先输入bash指令进入Ubuntu系统

这里写图片描述

接着可以输入passwd重置密码,重置完密码就可以正常使用Ubuntu系统了。至此,基本的安装工作就完成了。

=菜鸟分割线===

####Linux进阶
在Ubuntu下我们可以通过 apt-get 命令 很方便的安装 / 卸载软件,由于默认的软件包仓库是位于国外的,安装软件的时候就可能遇到各种网络问题或者下载到的一些资源不完整,因此就需要切换数据源为国内的镜像站点来改善。

编辑数据源配置文件 vi /etc/apt/sources.list
这里写图片描述

接着就进入vi编辑器
这里写图片描述

继续按enter键进入真正的vi编辑页面
这里写图片描述

vi编辑器一共有三种模式,分别是命令模式(command mode)插入模式(Insert mode)底行模式(last line mode)。命令模式下我们只能控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode等;插入模式下可以做文字输入,按「ESC」键可回到命令行模式;底行模式下,可以将文件保存或退出vi,也可以设置编辑环境,如寻找字符串、列出行号等。

当我们进入vi编辑器的时候默认是命令行模式,这是后如果想编辑内容,就输入 i 命令就可以了。现在我们要把镜像源改为阿里的,所以插入如下内容:

deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse

接着按「ESC」退会命令行模式,输入命令行 wq! 保存退出就好了。

接着输入命令apt-get update更新配置就可以了,这个过程可能比较长,祝好运!
这里写图片描述

好了本教程到此结束,如果本文帮助到了你,请客打个赏,不在意多少,只在乎情谊!
在这里插入图片描述

2018-09-07 07:31:28 weixin_41881671 阅读数 1461

转载自论文:来源:《进程的多对多(M:N)线程模型研究》李晋

windows调度系统

基于优先级调度

Windows操作系统的调度模块采用的是基于优先级的可抢占调度,保证了一定的实时性支持。Windows调度代码是在内核中实现的,但是这个调度器并不是一个单独的模块或者例程,而是在调度可能触发的位置设置了一个类似触发器的函数,它被称作Windows的分发器(dispatcher)。当一个线程变为就绪态时,或者有线程离开了运行态,再或者线程的优先级和处理器亲和性等发生了改变,都会触发分发器对线程的重新调度。
Windows的优先级被分为32个级别:16个实时级别(16至31),该级别中的线程一定是最先运行,且优先级数不会发生浮动;15个可变级别(1至15),该级别中线程低于实时级别进程运行,其优先级可以根据需要由系统的负载均衡模块实时浮动,但是最高不可达到16;1个留给零页面线程的系统级别(0)。每个线程都有一个基本优先级,它是其进程优先级类别和相对线程优先级的一个函数,而线程的基本优先级根据进程基本优先级来计算。同时,线程还拥有一个当前优先级别,而调度是根据这个优先级别来进行调度判断的。在特定情况下,系统在很短的时间周期内会在动态范围(1至15)之内增加线程的优先级。在PRCB结构中有就绪线程队列整组DispatcherReadyListHead,其中每个队列都代表一个优先级,所有就绪线程就按照其优先级挂入其某个队列。

Windows调度原则

Windows的线程调度系统并没有Linux调度系统那么的复杂,其本身就遵循以下几个调度规则:
1,严格执行按优先级的调度,只要有高优先级就绪线程的存在,低优先级线程就不能得到运行机会。
2,如果有多个相同优先级的就绪线程存在,则按照各线程在就绪队列中的先后次序调度。
3,受调度运行的线程被赋予一个时间片,只要不被更高优先级的线程剥夺,则一直运行直到时间片耗尽。但耗尽之后应当适当降低其优先级(不会低于其基准优先级),然后按照实际优先级继续挂入相应就绪队列尾部。
4,运行中的线程因为需要待待某个事件发生而自愿暂时放弃运行进行睡眠,这时线程并不处于就绪状态,因则不挂入就绪队列。当等待事件发生时,该线程则挂入对应优先级的就绪队列或者直接变为“剥夺者”线程。
5,如果线程运行过程中有更高优先级线程变为就绪线程,则当前运行线程被剥夺。

最后需要注意的是,Windows的‘剥夺式’调度中线程的调度与切换是分离的。即新调度线程并不会导致直接的线程切换。原因是如果此时是在中断服务处理阶段时,系统是不允许发生线程切换的,因为线程切换会引起堆栈的切换,这样的话中断返回时就会返回到另一个新线程的上下文中去运行。因此实际的线程切换可能会滞后一段时间到中断返回。windows的‘可剥夺’调度机制,从实时性角度上来讲还是有一定的条件限制的。

LINUX进程控制

Linux中的进程状态被存储在task_struct的state域中,用来标记当前进程描述符所表示的进程在操作系统中的存在状态,状态名称及其之间的转换关系如下图
这里写图片描述
这里写图片描述
Linux拥有五种不同的进程状态,每个状态都表示了进程的一个特定的运行阶段,五个状态名称及其描述如下:
1,TASK_RUNNING表示运行状态,表示当前进程是可执行的,即进程正在CPU上执行或者进程在运行队列中等待被调度运行。当进程正处于CPU上运行时,则进入该状态的正在运行阶段,当进程从CPU上切换下来但仍处于适合运行的状态时,则进入该状态的就绪阶段。一个进程无论是在用户空间执行还是内核空间执行,其state域中都是这个值。
2,TASK_INTERRUPTIBLE表示可中断睡眠状态,表示当前进程正在睡眠,由其命名可以看出,该状态可以被打断。所以它是一种可以被唤醒的睡眠状态,进程等待的条件达成,系统内核会用通知的方法把进程唤醒并设置为运行态。
3,TASK_UNINTERRUPTIBLE表示不可中断睡眠状态,表示进程正在睡眠且对信号等不做相应,这种状态一般只使用在进程的创建过程中。在进程的正常运行状态下,进程的睡眠等待都是有目的,因此该状态使用的比较少。
4,TASK_ZOMBIE表示僵尸状态,当前进程已经结束了其运行函数并且停止,但是其进程描述符还被保留在系统中以供其父进程获取。
5,TASK_STOPPED表示停止状态,此时进程处于不工作状态,不能被调度运行。该状态是进程接收到SIGSTOP、SIGTSTP、SIGTTIN、SIGTTOU等信号时进入的状态

Linux与Windows的不同

Linux内核中的进程控制块task_struct,同时也是线程在使用的线程控制块。虽然不同的线程库同时也拥有自己的线程数据结构,但是其本质是对task_struct的一层封装。也正因此,Linux的进程在创建之初就是一个可调度的单位,所以在创建好进程的同时,线程也就创建好了。而Windows系统中的进程控制块和线程控制块是完全不相同的两个结构,其进程控制块更像传统的资源管理结构,而线程控制块则是程序运行结构。在windows进程创建的过程中,还有较为复杂的专门创建第一个线程的单独过程。
Linux进程与进程之间保持很高的独立性,只有通过各种进程间通信的方式才能够相互交流。而Windows系统则不同,一个进程可以为另一个进程的地址空间分配新缓冲区,在里面写入新程序映像,然后为其创建一个新线程并使其执行。同时windows提供了由别的线程挂起另一个进程中线程的运行手段,LInux中并没有这样的接口。
Linux中的fork()操作使得创建出来的子进程自然拥有了父进程的大部分特征,接着在execve()函数中根据权限位图和打开文件表来关闭没有访问权限的打开文件,主要留下stdin、stdout、stderr三个标准输入输出文件。这样创建出的进程里有很多父进程的遗留特征,父子关系非常明显。而windows进程在创建子进程的时候就可以规定是否遗传已打开的各种对象,而且大部分的进程线程管理资源和运行资源都是新建立的,新进程与老进程之间的联系非常小。
Linux中的拥有task_struct的单位都可以被调度,这样的话每个线程都具有被调度的策略和优先级,且按POSIX中的定义来区分的话Linux进程和线程在调度时候甚至是平级调度,一个线程可以与进程拥有同样的调度机会。Windows中首先进程拥有一层调度优先级,然后同进程内的线程又拥有一层调度优先级。这是一种层次结构,进程优先级过低的话其内部线程的优先级不会高。Windows系统中的进程是不会被调度的,因为本身没有运行资源,必须依靠线程来运行。

2018-07-13 17:29:34 weixin_42325010 阅读数 50559

1.安装环境介绍

首先,出于本人学习需要,要用到linux系统,但是经常又会用到win10,因此迫切需要双系统的电脑。所在本人就琢磨着怎么在不删除原来win10的情况下可以装一个linux的ubuntu系统。

2.常见的安装步骤

 2.1首先在想要安装linux系统的磁盘的尾巴步压缩出一个大概50G的空间,超大预算,压缩出来的空间在这里不用建立成新分区,待后面备用。在这里,本人选的是非系统盘安装的,但是也不是说一定不可以,有动手能力的同学可以try。具体操作如下。

2.2制作linuxU盘启动。

下载Ultraiso软碟通工具,下载完成后,插入U盘,使用Ultraiso打开你下载好的linux系统,然后把整个iso文件【写入硬盘影像】到U盘,千万记住备份U盘里面的数据,写入过程中请不要让电脑休眠,以免损坏U盘。写完后会有相应成功提示,成功后点击返回即可。

3.设置BIOS U盘启动

这个首先启动的我就默认你们都会了,不会的自行百度。我用的是宏基的电脑,直接F12就可以进去了。

4安装ubuntu

从U盘启动后,会有两个选项,一个是try withou ......,,另一个是install ubuntu  ,,,我们都干了这多事情总不至于还不知道怎么选吧。注:选择install ubuntu。

前面两个基本上没什么大问题,但是这一步要注意,一般推荐悬着其他选项,由我们自己来分配盘符,千万不要选择1,否则你的数据可能就gg了。

5.分配盘符

这里可能是绝大部分出现问题的地方。我先来说说我出现问题的地方。

5.1第一次我是出现了这样的错误:

The partition table format in use on your disks normally requires to you create a separate partition for boot loader code. This partition should be marked for use as a “Reserved BIOS boot area” and should be at least 1MB in size. Note that this is not the same as a partition mounted on /boot.

If you do not go back to the partitioning menu and correct this error, boot loader installation may fail later, although it may still be possible to install the boot loader to a partition.

这部分英文大概意思就是我们引导分区缺少空间,会发生错误之类的。对于安装过centos系统的同学来说,可能会感到莫名其妙。我就是这样的,然后我就忽略它接着装下去,结果还是靠事实来说话。系统起不来。

5.2第二次错误:

第二次,我去加了个biosgrub(系统保留区),实际上就是引导文件,但是系统盘符怎么具体分配我也没怎么注意,系统还是没有起来。于是装了个EastBCD2.3,发现还用不了。在逛论坛发现启动可以分为MSR黑UEFI是,我想是不是可以用Uefi来试试。

5.3第三次错误:

这一次安装好之后系统是起来了,但是当我切换到win10之后我发现我再也不能启动ubuntu了。在BIOS里面也发现了ubuntu,但是就是启动不了。然后下了个Easyuefi 确实发现ubuntu启动,但是好像是被禁用隐藏了,网上找了半天,各种方法都试过还是没什么用。

5.4这一次启动了系统(MSR)。

在这里我只说下我盘符的分配方式,可能对一部分电脑有用吧。

首先:/  Swap  / boot  以及留一部分给启动用的都是主分区。

其他的分区,像/home,/usr 都随便给给。

6.结论

经过这么多次的尝试,我认为主要有下面几个方面问题:

1 要把系统的快捷启动给关掉,具体怎么做上百度。

2 进入系统bios关掉安全启动项,这点非常重要,否则系统写入了,但是没有启动项。

3关于最后悬着boot引导分区装在哪里,这其实看个人,如果你是默认不动,那么将会有linux来引导windows,如果你选择了你boot的那个分区,那么将会有window来引导Linux,此时你需要进入系统用easybcd这款软件来设置启动项。但是又Linux来引导win10最麻烦的事情就是卸载问题。所以两者各有利弊,看个人喜好。但是本人推荐前者。

如果你出现了下图,那么,恭喜你的系统安装成功。

 

2016-12-08 20:11:54 ma57457 阅读数 6661

想从windows下切换到Linux,感觉好难,虽然早有这个想法,但是真正做起来后感觉还是有点难度,主要是命令行的界面感觉不习惯。感觉没有了鼠标就什么都不会干了,尤其是在vi下的时候,连上下左右都不会了。但是换了vim.tiny后感觉我又会用了。

下面说说我的linux入门,虚拟机环境vmware12,linux  descrotion ubuntu 16.04.


安装过程就不赘述了,进入后的界面是图形界面,图形界面的操作还能大概还能用一下鼠标,然后我跳转到了命令行界面。


进入到该界面后有提示我的linux发行版是ubuntu 16.04,然后输入用户名、密码,密码输入期间没有提示,不会出现***。

输错了一次密码,接着再输一次,正确,出现ma57457@ubuntu:~$_说明我已经进入了系统,……+_+是的,什么也没有。

然后我输入ls看看目录都有哪些。

有一些文件夹,我尝试在Desktop下新建一个*.c文件,然后在图形桌面下就会出现一个同名文件,呃,我姑且认为这个问价夹就是我的图形桌面的存储文件夹吧。

然后我进入图形终端看看,按下组合键ctrl+alt+F7


桌面多了我刚刚创建的文件,然后我尝试在图形界面下新建一个文件夹test

我去命令行界面看看去,命令行界面进入的组合键是ctrl+alt+f1~f6,就是说可以选择6个命令行终端,但是只有一个图形终端,就是ctrl+alt+F7。

好吧,玩过了这些,我还得搞搞事情啊。

玩玩vi吧,输入vi ma.c,_(:зゝ∠)_,然后悲剧来了,不会用了,上下左右使用的跟我想的完全不一样,用“HJKL”这几个按键来实现上下左右的移动,然后模式又分为一般、插入、行末模式,而且ubuntu的vi默认不打开左下角的模式提示信息,输入:set showmode打开之后又发现是使用x来进行删除的,退格键的功能也改了,更悲伤的是,这是个残缺版的vi

看吧,只有vi,不是vim。

 

呃,我尝试一下安装一个完整版的vim,此处略过一万字的安装失败文字,暂时没有安装成功。

╮(╯▽╰)╭,先不装吧。我试试vim.tiny,输入vim.tiny ma.c,能用,我写个通用程序试试哈。


嘿嘿,这个vim还挺符合我的操作习惯的,然后我写了个世界你好。

按下esc ,输入wq,然后用gcc编译一下,出来了个a.out,输入./a.out执行。

世界,你好!



写于2016年12月9日夜

深圳