精华内容
下载资源
问答
  • 什么是多任务?什么叫做进程?什么是线程?

    千次阅读 多人点赞 2017-01-24 09:27:57
    1、什么叫做多任务? IT系统,同时完成多项任务处理,这个同时指的是同一段时间内,而不是同一瞬时。 多任务处理是指用户可以在同一时间内运行多个应用程序,每个应用程序被称作一个任务.Linux、windows就是支持...
    1、什么叫做多任务?
    IT系统,同时完成多项任务处理,这个同时指的是同一段时间内,而不是同一瞬时。
    多任务处理是指用户可以在同一时间内运行多个应用程序,每个应用程序被称作一个任务.Linux、windows就是支持多任务的操作系统,比起单任务系统它的功能增强了许多。
    当多任务操作系统使用某种任务调度策略允许两个或更多进程并发共享一个处理器时,事实上处理器在某一时刻只会给一件任务提供服务。因为任务调度机制保证不同任务之间的切换速度十分迅速,因此给人多个任务同时运行的错觉。多任务系统中有3个功能单位:任务、进程和线程。
    多任务处理是指设备同时运行多个程序的能力。多任务的一般方法是运行第一个程序的一段代码,保存工作环境;再运行第二个程序的一段代码,保存环境;……恢复第一个程序的工作环境,执行第一个程序的下一段代码……现代的多任务,每个程序的时间分配相对平均。
    一个线程是指程序的一条执行路径,它在系统指定的时间片中完成特定的功能。系统不停地在多个线程之间切换,由于时间很短,看上去多个线程在同时运行。或者对于在线程序可并行执行同时服务于多个用户称为多任务处理。
    2、什么是进程?谈谈你对进程的理解?
    进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。[
    进程和线程都是由操作系统所体现的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性。
    进程和线程的区别在于:
    简而言之,一个程序至少有一个进程,一个进程至少有一个线程.
    线程的划分尺度小于进程,使得多线程程序的并发性高。
    另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。
    线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出 口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。
    从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别。
    进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位. 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.
    一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行.
    进程是一个具体的应用程序,线程是进程中的一个分支,为单独完成程序中的某一项或一组功能而存在。
    应用程序可以有一个或多个进程,一个进程可以有一个或多个线程,其中一个是主线程(线程是进程中的实体,一个线程必须有一个父进程).
    3、什么叫做并发执行
    1、并发运行就是让计算机同时运行几个程序或同时运行同一程序多个进程或线程。
    2、早期的计算机只具有一个中央处理器(CPU)并且是单核(只有一个运算器)的,这种情况下计算机操作系统采用并发技术实现并发运行,具体做法是采用“ 时间片轮询进程调度算法”,它的思想简单介绍如下: 在操作系统的管理下,所有正在运行的进程轮流使用CPU,每个进程允许占用CPU的时间非常短(比如10毫秒),这样用户根本感觉不出来CPU是在轮流为多个进程服务,就好象所有的进程都在不间断地运行一样。但实际上在任何一个时间内有且仅有一个进程占有CPU及CPU的运算器。
    3、现阶段许多计算机具有多个中央处理器或一个处理器具有多个运算器(多核),情况就不同了,如果进程数小于CPU或运算器数,则不同的进程可以分配给不同的CPU或运算器来运行,这样,各个进程就是真正同时运行的,这便是并行。但如果进程数大于CPU或运算器数,则仍然需要使用并发技术。
    4、有些操作系统并不支持多个CPU或多核CPU,如 ms winodws 9x、3.x,这样的操作系统多个CPU、或多核CPU对它们来说是无用的。
    4、什么叫做线程?
    线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。另外,线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。由于线程之间的相互制约,致使线程在运行中呈现出间断性。线程也有就绪、阻塞和运行三种基本状态。就绪状态是指线程具备运行的所有条件,逻辑上可以运行,在等待处理机;运行状态是指线程占有处理机正在运行;阻塞状态是指线程在等待一个事件(如某个信号量),逻辑上不可执行。每一个程序都至少有一个线程,若程序只有一个线程,那就是程序本身。
    线程是程序中一个单一的顺序控制流程。进程内一个相对独立的、可调度的执行单元,是系统独立调度和分派CPU的基本单位指运行中的程序的调度单位。在单个程序中同时运行多个线程完成不同的工作,称为多线程。
    线程的引入:
    60年代,在OS中能拥有资源和独立运行的基本单位是进程,然而随着计算机技术的发展,进程出现了很多弊端,一是由于进程是资源拥有者,创建、撤消与切换存在较大的时空开销,因此需要引入轻型进程;二是由于对称多处理机(SMP)出现,可以满足多个运行单位,而多个进程并行开销过大。
    因此在80年代,出现了能独立运行的基本单位——线程(Threads)。
    展开全文
  • 多任务学习

    万次阅读 多人点赞 2018-01-12 16:35:45
    多任务学习(Multitask learning)是迁移学习算法的一种,迁移学习可理解为定义一个一个源领域source domain和一个目标领域(target domain),在source domain学习,并把学习到的知识迁移到target domain,提升...

    简介:
    多任务学习(Multitask learning)是迁移学习算法的一种,迁移学习可理解为定义一个一个源领域source domain和一个目标领域(target domain),在source domain学习,并把学习到的知识迁移到target domain,提升target domain的学习效果(performance)。


    概念解析

    多任务学习(Multi-task learning):由于我们的关注点集中在单个任务上,我们忽略了可能帮助优化度量指标的其它信息。具体来说,这些信息来自相关任务的训练信号。通过共享相关任务之间的表征,可以使我们的模型更好地概括原始任务。这种方法被称为多任务学习(MTL)。其也是一种归纳迁移机制,主要目标是利用隐含在多个相关任务的训练信号中的特定领域信息来提高泛化能力,多任务学习通过使用共享表示并行训练多个任务来完成这一目标。归纳迁移是一种专注于将解决一个问题的知识应用到相关的问题的方法,从而提高学习的效率。比如,学习行走时掌握的能力可以帮助学会跑,学习识别椅子的知识可以用到识别桌子的学习,我们可以在相关的学习任务之间迁移通用的知识。此外,由于使用共享表示,多个任务同时进行预测时,减少了数据来源的数量以及整体模型参数的规模,使预测更加高效。因此,在多个应用领域中,可以利用多任务学习来提高效果或性能,比如垃圾邮件过滤、网页检索、自然语言处理、图像识别、语音识别等。
    归纳偏执(inductive bias):归纳迁移的目标是利用额外的信息来源来提高当前任务的学习性能,包括提高泛化准确率、学习速度和学习的模型的可理解性。提供更强的归纳偏执是迁移提高泛化能力的一种方法,可以在固定的训练集上产生更好的泛化能力,或者减少达到同等性能水平所需要的训练样本数量。归纳偏执会导致一个归纳学习器更偏好一些假设,多任务学习正是利用隐含在相关任务训练信号中的信息作为一个归纳偏执来提高泛化能力。归纳偏置的作用就是用于指导学习算法如何在模型空间中进行搜索,搜索所得模型的性能优劣将直接受到归纳偏置的影响,而任何一个缺乏归纳偏置的学习系统都不可能进行有效的学习。不同的学习算法(如决策树,神经网络,支持向量机等)具有不同的归纳偏置,人们在解决实际问题时需要人工地确定采用何种学习算法,实际上也就是主观地选择了不同的归纳偏置策略。一个很直观的想法就是,是否可以将归纳偏置的确定过程也通过学习过程来自动地完成,也就是采用“学习如何去学(learning to learn)”的思想。多任务学习恰恰为上述思想的实现提供了一条可行途径,即利用相关任务中所包含的有用信息,为所关注任务的学习提供更强的归纳偏置。


    详解

    1.从机器学习的角度来看,我们将多任务学习视为一种归约迁移(inductive transfer)。归约迁移(inductive transfer)通过引入归约偏置(inductive bias)来改进模型,使得模型更倾向于某些假设。举例来说,常见的一种归约偏置(Inductive bias)是L1正则化,它使得模型更偏向于那些稀疏的解。在多任务学习场景中,归约偏置(Inductive bias)是由辅助任务来提供的,这会导致模型更倾向于那些可以同时解释多个任务的解,这样做会使得模型的泛化性能更好。

    2.深度学习中两种多任务学习模式:隐层参数的硬共享与软共享
    (1)参数的硬共享机制:参数的硬共享机制是神经网络的多任务学习中最常见的一种方式,一般来讲,在实际应用中,通常通过在所有任务之间共享隐藏层,同时保留几个特定任务的输出层来实现。硬共享机制降低了过拟合的风险。事实上,有文献证明了这些共享参数过拟合风险的阶数是N,其中N为任务的数量,比任务相关参数的过拟合风险要小。直观来将,这一点是非常有意义的。越多任务同时学习,我们的模型就能捕捉到越多任务的同一个表示,从而导致在我们原始任务上的过拟合风险越小。
    (2)参数的软共享机制(基于约束的共享(regularization based)):每个任务都由自己的模型,自己的参数。在共享 Soft 参数时,每个任务都有自己的参数和模型。模型参数之间的距离是正则化的,以便鼓励参数相似化。我们对模型参数的距离进行正则化来保障参数的相似。如有文献使用L2距离正则化,而也有文献使用迹正则化(trace norm)。用于深度神经网络中的软共享机制的约束很大程度上是受传统多任务学习中正则化技术的影响。约束深度神经网络 Soft 参数共享的思想受到了 MTL 正则化技术的极大启发,这种思想已经用于其它模型开发。

    3.多任务学习的有效性
    由于所有任务都或多或少存在一些噪音,例如,当我们训练任务A上的模型时,我们的目标在于得到任务A的一个好的表示,而忽略了数据相关的噪音以及泛化性能。由于不同的任务有不同的噪音模式,同时学习到两个任务可以得到一个更为泛化的表示(As different tasks have different noise patterns, a model that learns two tasks simultaneously is able to learn a more general representations.)。如果只学习任务A要承担对任务A过拟合的风险,然而同时学习任务A与任务B对噪音模式进行平均,可以使得模型获得更好表示F;
    若任务噪音严重,数据量小,数据维度高,则对于模型来说区分相关与不相关特征变得困难。多任务有助于将模型注意力集中在确实有影响的那些特征上,是因为其他任务可以为特征的相关与不相关性提供额外的证据;
    对于任务B来说很容易学习到某些特征G,而这些特征对于任务A来说很难学到。这可能是因为任务A与特征G的交互方式更复杂,或者因为其他特征阻碍了特征G的学习。通过多任务学习,我们可以允许模型窃听(eavesdrop),即使用任务B来学习特征G;
    多任务学习更倾向于学习到一类模型,这类模型更强调与其他任务也强调的那部分表示。由于一个对足够多的训练任务都表现很好的假设空间,对来自于同一环境的新任务也会表现很好,所以这样有助于模型展示出对新任务的泛化能力;
    单任务学习时,梯度的反向传播倾向于陷入局部极小值。多任务学习中不同任务的局部极小值处于不同的位置,通过相互作用,可以帮助隐含层逃离局部极小值;
    添加的任务可以改变权值更新的动态特性,可能使网络更适合多任务学习。比如,多任务并行学习,提升了浅层共享层(shared representation)的学习速率,可能,较大的学习速率提升了学习效果;
    正则化机制:多任务学习通过引入归纳偏置(inductive bias)起到与正则化相同的作用。正是如此,它减小了模型过拟合的风险,同时降低了模型的Rademacher复杂度,即拟合随机噪音的能力。

    4.多任务学习MTL 有很多形式:联合学习(joint learning)、自主学习(learning to learn)和带有辅助任务的学习(learning with auxiliary task)等都可以指 MTL。一般来说,优化多个损失函数就等同于进行多任务学习(与单任务学习相反)。这些情况有助于你明确地思考如何在 MTL 方面做尝试并从中获得启发。

    5.多任务学习与其他学习算法之间的关系
    迁移学习:自1995年以来,迁移学习吸引了众多的研究者的目光,迁移学习有很多其他名字:学习去学习(Learning to learn)、终身学习(life-long learning)、推导迁移(inductive transfer)、知识强化(knowledge consolidation)、上下文敏感性学习(context-sensitive learning)、基于知识的推导偏差(knowledge-based inductive bias)、累计/增量学习(increment / cumulative learning)等。在机器学习、深度学习和数据挖掘的大多数任务中,会假设training和inference时,采用的数据服从相同的分布(distribution)、来源于相同的特征空间(feature space)。但在现实应用中,这个假设很难成立,往往遇到一些问题:

    a.带标记的训练样本数量有限。比如,处理A领域(target domain)的分类问题时,缺少足够的训练样本。同时,与A领域相关的B(source domain)领域,拥有大量的训练样本,但B领域与A领域处于不同的特征空间或样本服从不同的分布。
    b.数据分布会发生变化。数据分布与时间、地点或其他动态因素相关,随着动态因素的变化,数据分布会发生变化,以前收集的数据已经过时,需要重新收集数据,重建模型。

    多任务学习是针对数据给出多个监督信息(标签)进行学习,例如识别一张图像中的脸是否是人脸、脸部表情、性别、年龄等,识别图像中车的颜色、车型、姿态等,都属于多任务分类。
    多标签学习(Multilabel learning)是多任务学习中的一种,建模多个label之间的相关性,同时对多个label进行建模,多个类别之间共享相同的数据/特征。
    多类别学习(Multiclass learning)是多标签学习任务中的一种,对多个相互独立的类别(classes)进行建模。这几个学习之间的关系如下图所示:
    这里写图片描述


    6.实例介绍

    (1)人脸识别:多任务学习给出多个监督信息(标签),利用任务之间的相关性互相促进。香港中文大学汤晓鸥组发表在NIPS14的论文《Deep Learning Face Representation by Joint Identification-Verification》,提出了一种联合训练人脸确认损失和人脸分类损失的多任务人脸识别网络DeepID2(Deep IDentification-verification features)。DeepID2中共有两个损失函数,分别为人脸分类损失函数和人脸验证loss。结合两个损失学习效果会更好,原因是:分类任务旨在区分不同类,理论上,只要类别不同学习到的特征肯定不同,重点在于扩大类间距离,而验证这个任务从另一个方面提取特征:缩小类内距离扩大类间相对距离!但是后者提取到的特征不能用于分类,只能做二值区分。所以说两个任务具有一定的互补性!
    这里写图片描述

    (2)脸部特征点检测:脸部特征点检测受遮挡和姿势变化等问题的影响,:通过多任务学习具有提高检测健壮性的可能性,而不是把检测任务视为单一和独立的问题。多任务学习希望把优化脸部特征点检测和一些不同但细微相关的任务结合起来,比如头部姿势估计和脸部属性推断。脸部特征点检测不是一个独立的问题,它的预测会被一些不同但细微相关的因素影响。比如一个正在笑的孩子会张开嘴,有效地发现和利用这个相关的脸部属性将帮助更准确地检测嘴角。
    如下图,一个TCDCN模型,除了检测特征点任务,还有识别眼镜、笑脸、性别和姿态这四个辅助任务,通过与其它网络的对比,可以看出辅助任务使主任务的检测更准确。
    这里写图片描述

    TCDCN通过随机梯度下降进行学习,不同的任务有不同的损失函数和学习难度,因此有不同的收敛速度,网络结构如下图所示。早期的方法通过探索任务之间的关系,比如学习所有任务权重的协方差矩阵来解决收敛速度不同的问题,但是这种方法只能在所有任务的损失函数相同时才能应用。TCDCN采用一种尽快停止辅助任务的方法避免这些任务对训练集过拟合后影响主任务的学习:即在训练开始时,TCDCD受所有任务的约束,避免陷入不好的局部最优;随着训练的进行,有些辅助任务将不再使主任务受益,它们的学习过程将被停止。
    这里写图片描述

    (3)目标检测: Fast R-CNN。Fast R-CNN 是一个物体检测的快速的基于区域的卷积网络,其中也有多任务深度学习的应用,图中展示了Fast R-CNN的网络结构。一张图片和多个RoI(感兴趣区域)输入到一个全卷积网络,每个RoI会进入一个固定大小的feature map,然后被全连接层映射到一个特征向量。每个RoI有两个输出:softmax概率和每个分类的矩形框回归补偿。

    这里写图片描述
    一个Fast R-CNN网络有两个输出层:第一个输出K+1个分类的概率分布;第二个输出每个分类的边框回归补偿。每个训练RoI标注为一个参考标准分类u和一个参考标准边框回归对象v,在每个标注的RoI用多任务损失函数L来共同训练分类和矩形框回归。


    总结
    现实世界中很多问题不能分解为一个一个独立的子问题,即使可以分解,各个子问题之间也是相互关联的,通过一些共享因素或共享表示(share representation)联系在一起。把现实问题当做一个个独立的单任务处理,忽略了问题之间所富含的丰富的关联信息。多任务学习就是为了解决这个问题而诞生的。把多个相关(related)的任务(task)放在一起学习。这样做真的有效吗?答案是肯定的。多个任务之间共享一些因素,它们可以在学习过程中,共享它们所学到的信息,这是单任务学习所具备的。相关联的多任务学习比单任务学习能去的更好的泛化(generalization)效果。

    多任务学习是一种归纳迁移机制,利用额外的信息来源来提高当前任务的学习性能,包括提高泛化准确率、学习速度和已学习模型的可理解性。在学习一个问题的同时,可以通过使用共享表示来获得其他相关问题的知识。

    能提高泛化能力的可能原因有三:第一,不相关任务对于聚合梯度的贡献相对于其他任务来说可以视为噪声,不相关任务也可以通过作为噪声源来提高泛化能力;第二,增加任务会影响网络参数的更新,比如增加了隐层有效的学习率;第三,多任务网络在所有任务之间共享网络底部的隐层,或许更小的容量就可以获得同水平或更好的泛化能力。因此,我们需要关注如何选择多个相关任务及数据集使网络更好地泛化,有四种机制可以帮助多任务学习网络更好地泛化:统计数据增强、属性选择、信息窃取、表示偏置。

    多任务学习将会在越来越多的领域作为一种提高神经网络学习能力的手段被广泛应用。 深度学习网络是具有多个隐层的神经网络,在深度学习网络中应用多任务学习是一种很自然的想法。机器视觉领域有广泛的多任务学习应用,主要方式包括:
    多个任务并行输出;
    同时做分类和回归或使用不同的损失函数
    多个任务如流水线般,辅助任务附加在主任务后面。


    Reference
    机器之心:https://www.jiqizhixin.com/articles/2017-06-23-5
    [1] T. Evgeniouand M. Pontil. Regularized multi-task learning. In Proceeding of thetenth ACM SIGKDD international conference on Knowledge Discovery and DataMining, 2004.

    [2] T. Jebara. MultitaskSparsity via Maximum Entropy Discrimination. In Journal of Machine LearningResearch, (12):75-110, 2011.

    [3] A. Argyriou,T. Evgeniou and M. Pontil. Convex multitask feature learning. In MachineLearning, 73(3):243-272, 2008.

    [4] T. G. Dietterich, L. Pratt, and S. Thrun, Eds., “Machine Learning – Special issue on inductive transfer,” Mach Learn, vol. 28, no. 1, 1997.

    [5] L. Holmstrom and P. Koistinen, “Using additive noise in back-propagation training,” IEEE Trans. Neural Netw., vol. 3, no. 1, pp. 24–38, Jan. 1992.

    [6] Z. Zhang, P. Luo, C. C. Loy, and X. Tang, “Facial Landmark Detection by Deep Multi-task Learning,” in Computer Vision – ECCV 2014: 13th European Conference, Zurich, Switzerland, September 6-12, 2014, Proceedings, Part VI, D. Fleet, T. Pajdla, B. Schiele, and T. Tuytelaars, Eds. Cham: Springer International Publishing, 2014, pp. 94–108.

    [7] Y. Sun, Y. Chen, X. Wang, and X. Tang, “Deep Learning Face Representation by Joint Identification-Verification,” in Advances in Neural Information Processing Systems 27, Z. Ghahramani, M. Welling, C. Cortes, N. D. Lawrence, and K. Q. Weinberger, Eds. Curran Associates, Inc., 2014, pp. 1988–1996.

    [8] G. B. Huang, M. Ramesh, T. Berg, and E. Learned-Miller, “Labeled faces in the wild: A database for studying face recognition in unconstrained environments,” Technical Report 07-49, University of Massachusetts, Amherst, 2007.

    [9] R. Girshick, “Fast R-CNN,” in The IEEE International Conference on Computer Vision (ICCV), 2015.

    展开全文
  • 一步步学习Linux多任务编程

    万次阅读 多人点赞 2015-06-04 10:56:55
    02、Linux系统调用之I/O操作(文件操作)03、文件描述符的复制:dup(), dup2()多进程实现多任务04、进程的介绍05、Linux可执行文件结构与进程结构06、多进程实现多任务(一):fork()07、多进程实现多任务(二):...

    系统调用

    01、什么是系统调用?

    02、Linux系统调用之I/O操作(文件操作)

    03、文件描述符的复制:dup(), dup2()


    多进程实现多任务

    04、进程的介绍

    05、Linux可执行文件结构与进程结构

    06、多进程实现多任务(一):fork()

    07、多进程实现多任务(二):vfork()

    08、进程的控制:结束进程、等待进程结束

    09、Linux特殊进程之僵尸进程

    10、Linux特殊进程之孤儿进程

    11、Linux特殊进程之守护进程

    12、进程替换:exec函数族


    进程间通信

    13、为什么需要进程间通信?

    14、进程间通信:信号中断处理

    15、进程间通信:无名管道

    16、进程间通信:有名管道

    17、进程间通信:消息队列

    18、进程间通信:共享内存


    多线程实现多任务

    19、进程和线程的区别与联系

    20、线程的基本操作

    21、线程堆栈大小的使用介绍

    22、线程私有数据

    23、线程池


    多任务的同步与互斥

    24、什么是同步,什么是互斥?

    25、线程同步与互斥:互斥锁

    26、线程同步与互斥:读写锁

    27、线程同步与互斥:POSIX无名信号量

    28、进程同步与互斥:POSIX有名信号量

    29、进程同步与互斥:System V 信号量


    拓展进阶篇

    30、Linux 进程管理

    31、Linux 进程调度浅析

    32、浅谈进程地址空间与虚拟存储空间

    33、Linux 线程浅析

    34、Linux 信号列表

    35、浅谈可重入函数与不可重入函数

    36、浅谈标准 I/O 缓冲区

    37、I/O多路复用select、poll、epoll的区别使用


    展开全文
  • Linux 是一个多用户、多任务的操作系统,我们应该了解单用户多任务和多用户多任务的概念。单用户多任务:比如我们以beinan 登录系统,进入系统后,我要打开gedit 来写文档,但在写文档的过程中,我感觉少点音乐,...

    Linux 是一个多用户、多任务的操作系统,我们应该了解单用户多任务和多用户多任务的概念。

    单用户多任务:

    比如我们以beinan 登录系统,进入系统后,我要打开gedit 来写文档,但在写文档的过程中,我感觉少点音乐,所以又打开xmms 来点音乐;当然听点音乐还不行,MSN 还得打开,想知道几个弟兄现在正在做什么,这样一样,我在用beinan 用户登录时,执行了gedit 、xmms以及msn等,当然还有输入法fcitx ;这样说来就有点简单了,一个beinan用户,为了完成工作,执行了几个任务;当然beinan这个用户,其它的人还能以远程登录过来,也能做其它的工作。

    多用户多任务:

    有时可能是很多用户同时用同一个系统,但并不所有的用户都一定都要做同一件事,所以这就有多用户多任务之说。

    举个例子,比如LinuxSir.Org 服务器,上面有FTP 用户、系统管理员、web 用户、常规普通用户等,在同一时刻,可能有的弟兄正在访问论坛;有的可能在上传软件包管理子站,比如luma 或Yuking 兄在管理他们的主页系统和FTP ;在与此同时,可能还会有系统管理员在维护系统;浏览主页的用的是nobody 用户,大家都用同一个,而上传软件包用的是FTP用户;管理员的对系统的维护或查看,可能用的是普通帐号或超级权限root帐号;不同用户所具有的权限也不同,要完成不同的任务得需要不同的用户,也可以说不同的用户,可能完成的工作也不一样。

    值得注意的是:多用户多任务并不是大家同时挤到一接在一台机器的的键盘和显示器前来操作机器,多用户可能通过远程登录来进行,比如对服务器的远程控制,只要有用户权限任何人都是可以上去操作或访问的。

    用户的角色区分:

    用户在系统中是分角色的,在Linux 系统中,由于角色不同,权限和所完成的任务也不同;值得注意的是用户的角色是通过UID和识别的,特别是UID;在系统管理中,系统管理员一定要坚守UID 唯一的特性;

    root 用户:系统唯一,是真实的,可以登录系统,可以操作系统任何文件和命令,拥有最高权限;

    虚拟用户:这类用户也被称之为伪用户或假用户,与真实用户区分开来,这类用户不具有登录系统的能力,但却是系统运行不可缺少的用户,比如bin、daemon、adm、ftp、mail等;这类用户都系统自身拥有的,而非后来添加的,当然我们也可以添加虚拟用户;

    普通真实用户:这类用户能登录系统,但只能操作自己家目录的内容;权限有限;这类用户都是系统管理员自行添加的;

    多用户操作系统的安全:

    多用户系统从事实来说对系统管理更为方便。从安全角度来说,多用户管理的系统更为安全,比如beinan用户下的某个文件不想让其它用户看到,只是设置一下文件的权限,只有beinan一个用户可读可写可编辑就行了,这样一来只有beinan一个用户可以对其私有文件进行操作,Linux 在多用户下表现最佳,Linux能很好的保护每个用户的安全,但我们也得学会Linux 才是,再安全的系统,如果没有安全意识的管理员或管理技术,这样的系统也不是安全的。

    从服务器角度来说,多用户的下的系统安全性也是最为重要的,我们常用的Windows 操作系统,它在系纺权限管理的能力只能说是一般般,根本没有没有办法和Linux或Unix 类系统相比;

    用户(user)的概念:

    通过前面对Linux 多用户的理解,我们明白Linux 是真正意义上的多用户操作系统,所以我们能在Linux系统中建若干用户(user)。比如我们的同事想用我的计算机,但我不想让他用我的用户名登录,因为我的用户名下有不想让别人看到的资料和信息(也就是隐私内容)这时我就可以给他建一个新的用户名,让他用我所开的用户名去折腾,这从计算机安全角度来说是符合操作规则的;

    当然用户(user)的概念理解还不仅仅于此,在Linux系统中还有一些用户是用来完成特定任务的,比如nobody和ftp 等,我们访问LinuxSir.Org 的网页程序,就是nobody用户;我们匿名访问ftp 时,会用到用户ftp或nobody ;如果您想了解Linux系统的一些帐号,请查看 /etc/passwd ;

    用户组(group)的概念:

    用户组(group)就是具有相同特征的用户(user)的集合体;比如有时我们要让多个用户具有相同的权限,比如查看、修改某一文件或执行某个命令,这时我们需要用户组,我们把用户都定义到同一用户组,我们通过修改文件或目录的权限,让用户组具有一定的操作权限,这样用户组下的用户对该文件或目录都具有相同的权限,这是我们通过定义组和修改文件的权限来实现的;

    举例:我们为了让一些用户有权限查看某一文档,比如是一个时间表,而编写时间表的人要具有读写执行的权限,我们想让一些用户知道这个时间表的内容,而不让他们修改,所以我们可以把这些用户都划到一个组,然后来修改这个文件的权限,让用户组可读,这样用户组下面的每个用户都是可读的;

    用户和用户组的对应关系是:一对一、多对一、一对多或多对多;
    一对一:某个用户可以是某个组的唯一成员;
    多对一:多个用户可以是某个唯一的组的成员,不归属其它用户组;比如beinan和linuxsir两个用户只归属于beinan用户组;
    一对多:某个用户可以是多个用户组的成员;比如beinan可以是root组成员,也可以是linuxsir用户组成员,还可以是adm用户组成员;

    多对多:多个用户对应多个用户组,并且几个用户可以是归属相同的组;其实多对多的关系是前面三条的扩展;理解了上面的三条,这条也能理解;

    参考:http://www.jb51.net/LINUXjishu/134575.html

    展开全文
  • 深度学习笔记(19) 多任务学习

    万次阅读 2019-06-16 08:47:49
    多任务学习概念、物体检测的多任务学习、多任务学习的条件
  • 多任务深度学习

    千次阅读 2016-10-21 16:24:09
    首发于 深度学习大讲堂 关注专栏 登录 写文章 ...一箭N雕:多任务深度学习实战 ...1、多任务学习导引 ...多任务学习是机器学习中的一个分支,按1997年综述论文Multi-task Learn
  • 对 iOS 多任务的误解 [多任务原理]

    万次阅读 2012-09-04 09:43:56
    原文:http://www.excitebuzz.com/misconceptions-about-ios-multitasking-how-multitasking-works/6592.html 如今,多任务这个有趣特性已经成功集成在设备中,我们如今使用的智能手机完全支持多任务,这其中有一个...
  • 多任务操作系统

    千次阅读 2019-10-27 12:06:08
    多用户与多任务操作系统是指一台计算机可以同时有多个用户同时使用,并且同时可以执行由多个用户提交的多个任务。 Windows多任务处理采用的是虚拟机技术,为每一个任务分配短暂的时间片轮流使用CPU。 多任务操作...
  • 网络及多任务

    千次阅读 2012-01-01 16:17:42
    原文:苹果参考库“Network and Multitasking”多任务是iOS4的关键特性。多任务允许你的应用在后台运行及挂起。对系统来说这是好事,但对你的应用来说会严重干扰其网络任务的执行。本文解释了在网络应用中如何处理...
  • linux的多任务

    千次阅读 2010-02-09 22:24:00
    写过一篇关于linux多用户的文章,在提到多用户的时候,多任务的概念也是有必要提出的,实际上,多用户必然意味着多任务,每个用户起码一个任务。这么看来。多任务是比多用户更加基本的一个概念和特性了。 在计算机的...
  • 而我最近也经常在一些群里看到有朋友问: windows7到底是单用户多任务还是多用户多任务。 不同的老师说法不同,百度上也有不同的答案。 所以我想发表一下我的个人看法 在我看来,windows7是多用户多任务操作系统。...
  • 多任务——损失函数

    万次阅读 2018-08-02 22:41:21
    《Multi-Task Learning Using ...创新点:之前的损失函数是根据不同任务的权重参数计算得来,这些权重的设置是困难的,而且需要花费大量时间和精力去进行验证,在实践中多任务学习望而却步。作者提出了一种考虑hom...
  • python多任务——线程

    千次阅读 2019-06-27 11:35:01
    并发:指的是任务数多余cpu核数,通过操作系统的各种任务调度算法,实现用任务“一起”执行(实际上总有一些任务不在执行,因为切换任务的速度相当快,看上去一起执行而已) 并行:指的是任务数小于等于cpu核数...
  • Tensorflow 多任务学习

    万次阅读 2017-03-15 20:24:27
    之前在caffe上实现了两个标签的多任务学习,如今换到了tensorflow,也想尝试一下,总的来说也不是很复杂。建立多任务多任务的一个特点是单个tensor输入(X),多个输出(Y_1,Y_2...)。因此在定义占位符时要定义多个...
  • 多任务中 多线程和多进程的区别

    万次阅读 多人点赞 2019-04-26 14:22:22
    多任务中 多线程和多线程的区别
  • iOS多任务(iPad分屏模式)

    千次阅读 2019-07-30 17:12:42
    苹果将这个功能称作iPad多任务 使用前准备. 要将你iPad的旋转方向设置为全部支持. 使用LaunchScreen.storyboard而不是LaunchImage. 有人可能会问,如果我仅仅想支持全部旋转方向而不想支持多任务怎么办...
  • Linux是一个多用户多任务的操作系统

    万次阅读 2016-04-24 15:25:01
    Linux是一个多用户多任务的操作系统。多用户是指多个用户可以在同一时间使用计算机系统;多任务是指Linux可以同时执行几个任务,它可以在还未执行完一个任务时又执行另一项任务。  操作系统管理多个用户的请求和多...
  • springboot quartz 多任务整合

    千次阅读 2017-11-18 18:19:50
    接下来遇到一个问题, 就是多任务, 上面文章中主要讲的是单任务的. 也在网上找了下, 发现都有些复杂. 我觉得springboot 不应该这么笨, 肯定有简单的办法. 所以研究了一下. 下面贴出我的代码 @Conf
  • 多任务学习-Multitask Learning

    万次阅读 2017-07-12 17:10:16
    1. 单任务学习VS多任务学习原文地址单任务学习:一次只学习一个任务(task),大部分的机器学习任务都属于单任务学习。多任务学习:把多个相关(related)的任务放在一起学习,同时学习多个任务。现在大多数机器学习...
  • 抢占式多任务处理是计算机操作系统中,一种实现多任务处理的方式,相对于协作式多任务处理而言。协作式环境下,下一个进程被调度的前提是当前进程主动放弃时间片;抢占式环境下,操作系统完全决定进程调度方案,操作...
  • springboot 多任务并行执行

    千次阅读 2018-05-23 17:04:05
    @ComponentScan(basePackages = { "... }) @EnableApolloConfig @EnableAsync // 开启多任务 public class BwStudyApplication { public static void main(String[] args) { SpringApplication.run(Bw...
  • 多任务深度学习(MultiTask Learning)

    万次阅读 2016-09-29 16:48:10
    多任务学习给出多个监督信息(标签),利用任务之间的相关性互相促进。案例1-人脸识别香港中文大学汤晓鸥组发表在NIPS14的论文《Deep Learning Face Representation by Joint Identification-Verification》,提出了...
  • # 任务队列 task_queue=Queue() # 结果队列 result_queue=Queue() # 提供给从机调用后得到队列中的数据 # 就是接口 def return_task(): return task_queue def return_result(): return result_queue class Queue...
  • Linux 系统同时可以支持个用户,...就像手机开了助手一样,同时登陆个 qq 账号,当硬件配置非常高时,每个用户还可以同时执行任务个线程同时工作,提高效率。用户是 Linux 优于其他操作系统的一大特点。
  • 多任务学习的资料,有一种机制是主要任务和辅助任务会相互帮助提高性能,那么keras的多输出模型属不属于这种多任务学习尼?还是只是单纯的相互独立的多类别学习而已?
  • 神经网络中的多任务学习

    千次阅读 2017-12-11 21:11:15
    简述 需求背景 ...为什么可以多任务训练 有些隐藏特征可以共用, 这是各output可以公用前几层的理论假设. 除了一石二鸟, 训练一次实现多种用途以外, 多个 output 之间也会相互平衡, 像正则项一样, 比单
  • uCos的多任务实现

    千次阅读 2017-01-19 22:56:50
    作为操作系统(OS),最基本的一项服务就是提供多线程,在实时操作系统uCos里,多线程被称为多任务(Task)。多任务并不是CPU能真正同时运行多个程序,实际是靠CPU在多个任务之间转换切换实现的,CPU轮番的服务于一系列...
  • 51单片机多任务机制的实现策略

    千次阅读 2013-12-27 13:05:48
    多任务恰恰是现在操作系统的突出特点,将多任务机制引入51单片机系统,可以大大提高先有单片机系统的工作效率,满足多任务要求。 1 多任务机制在51单片机上的实现原理 多任务要求在同一时间内执行多个任
  • 一、什么是多任务下载框架多任务框架就是指,同一时间内,支持多个资源下载。支持下载队列、进度更新、下载取消暂停等。包括:网络下载请求,下载任务执行、下载任务调度、UI进度更新、任务状态变化、文件的存储。二...
  • springboot之多任务并行+线程池处理

    万次阅读 多人点赞 2018-05-14 16:20:34
    最近项目中做到一个关于批量发短信的业务,如果用户量特别大的话,不能使用单线程去发短信,只能尝试着使用多任务来完成!我们的项目使用到了方式二,即Future的方案 Java 线程池 Java通过Executors提供四...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,316,073
精华内容 926,429
关键字:

多任务是什么