chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

英創(chuàng)信息技術Linux系統(tǒng)調(diào)度簡介

英創(chuàng)信息技術 ? 來源:英創(chuàng)信息技術 ? 作者:英創(chuàng)信息技術 ? 2020-02-05 10:31 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1、綜述

Linux作為多任務、多用戶的操作系統(tǒng),其進程/線程調(diào)度管理是實現(xiàn)這些特性的關鍵部分。調(diào)度管理決定系統(tǒng)中的眾多線程中哪個線程獲得執(zhí)行、什么時候開始執(zhí)行、執(zhí)行多久。一個好的調(diào)度算法能優(yōu)化系統(tǒng)資源的使用,提高系統(tǒng)使用效率。

Linux內(nèi)核中實現(xiàn)了Scheduler Classes,來實現(xiàn)多個調(diào)度類(Scheduler class)的協(xié)同工作,每個不同的調(diào)度類對應不同的類型的線程,而且每個調(diào)度類都有自身的優(yōu)先級,Linux調(diào)度管理基礎代碼會遍歷在內(nèi)核中注冊了的調(diào)度類,選擇高優(yōu)先級的調(diào)度類,然后讓此調(diào)度類按照自己的調(diào)度算法選擇下一個執(zhí)行的線程。Linux系統(tǒng)中常用的幾種調(diào)度類為SCHED_NORMAL、SCHED_FIFO、SCHED_RR。其中SCHED_NORMAL是用于普通線程的調(diào)度類,而SCHED_FIFO和SCHED_RR是用于實時線程的調(diào)度類,優(yōu)先級高于SCHED_NORMAL。內(nèi)核中區(qū)分普通線程與實時線程是根據(jù)線程的優(yōu)先級,實時線程擁有實時優(yōu)先級(real-time priority),默認取值為0~99,數(shù)值越高優(yōu)先級越高,而普通線程只具有nice值,nice值映射到用戶層的取值范圍為-20~+19,數(shù)值越高優(yōu)先級越低,默認初始值為0 ,子線程會繼承父線程的優(yōu)先級。對于實時線程,Linux系統(tǒng)會盡量使其調(diào)度延時在一個時間期限內(nèi),但是不能保證總是如此,不過正常情況下已經(jīng)可以滿足比較嚴格的時間要求了。下面將分別介紹這些調(diào)度類。

2、SCHED_NORMAL

對于SCHED_NORMAL,2.6之前的版本內(nèi)核中的調(diào)度管理程序是根據(jù)線程的優(yōu)先級(nice值)來分配一個固定的時間片(timeslice)給線程,比如nice值0對應于100ms的時間片,而nice值-20對應于5ms時間片,線程在執(zhí)行過程中進入阻塞狀態(tài)(I/O操作等引起)或者是執(zhí)行的時間達到分配的時間片后將會被搶占,而新進入運行態(tài)的線程會根據(jù)其優(yōu)先級和可用時間片來決定是否搶占當前正在執(zhí)行的程序。

2.6之后版本的Linux中SCHED_NORMAL使用的是Linux 內(nèi)核在2.6.23版本中引入的CFS(Complete Fair Scheduler)調(diào)度管理程序。CFS與之前的調(diào)度不同的是,線程的優(yōu)先級與時間片之間并沒有一個固定的關系,而是影響該線程在整個系統(tǒng)CPU運行時間中占有比例的一個因素。比如有兩個線程,對應的nice值分別為0(普通線程)和+19(低優(yōu)先級線程),那么普通線程將會占有19/20×100%的CPU時間,而低優(yōu)先級線程將會占有1/20×100%的CPU時間(具體數(shù)值只做舉例說明用,Linux內(nèi)核中的計算出來的數(shù)值會不一樣)。而如果同時運行的只有兩個相同優(yōu)先級的線程,那么他們分到的CPU時間各是50%。這樣每個線程能夠分配到的CPU時間占有比例跟系統(tǒng)當前的負載(所有處于運行態(tài)的線程數(shù)以及各線程的優(yōu)先級)有關,同一個線程在他本身優(yōu)先級不變的情況下分到的CPU時間占比會根據(jù)系統(tǒng)負載變化而發(fā)生變化,也即與時間片沒有一個固定的對應關系。

理想情況下CFS對CPU時間占比的衡量是在一個無限小的時間片內(nèi)計算單個線程執(zhí)行時間的占比,CFS的目標是所有線程在這個小的時間片周期內(nèi)執(zhí)行的時間都是相同的,無限小在現(xiàn)實中顯然是不存在的,Linux系統(tǒng)中這個時間片周期是與系統(tǒng)CPU數(shù)有關的,默認情況下單核CPU對應6ms,雙核CPU對應12ms,8核CPU對應24ms,當線程數(shù)增加到很大數(shù)量時,CFS會保證每個線程獲得最小執(zhí)行時間, 單核CPU對應0.75ms,雙核CPU對應1.5ms,8核CPU對應3ms。在CFS管理下,某個線程運行時如果進入阻塞態(tài)(或其他非運行態(tài))或者當前時間片周期內(nèi)的CPU時間占比達到后將會暫停運行,CFS然后將會選擇當前時間片周期內(nèi)已執(zhí)行時間最少的運行態(tài)線程繼續(xù)運行。當然CPU時間占比在內(nèi)核中也是以運行時間衡量的,比如某個單核CPU系統(tǒng)中只有兩個相同優(yōu)先級的線程同時處于運行態(tài),那么CFS將會以6ms為周期來調(diào)度所有線程,而每個6ms周期內(nèi)每個線程分得3ms執(zhí)行時間,如果某個線程中有I/O操作等其他操作使該線程進入非運行態(tài),CFS將會立即使另外一個線程繼續(xù)運行,如果兩個線程都是基本沒有I/O操作等會引起阻塞的操作(比如忙循環(huán)),那么線程將會在自己的執(zhí)行時間結(jié)束(本質(zhì)上是超出CPU時間占比)后被CFS程序調(diào)度出當前正在執(zhí)行的狀態(tài),另外一個線程獲得CPU資源開始執(zhí)行。

需要注意的是,進入CFS(或其他調(diào)度算法)需要調(diào)度事件的產(chǎn)生,調(diào)度事件可以是線程自己調(diào)用函數(shù)顯示執(zhí)行調(diào)度,或者線程執(zhí)行I/O操作等會進入阻塞的操作以及等待的事件發(fā)生線程進入運行態(tài)等(內(nèi)核中有固定的調(diào)度點),如果一個程序一直處于忙計算(比如忙循環(huán)程序),那么就會需要系統(tǒng)軟時間中斷來產(chǎn)生調(diào)度事件從而進入CFS調(diào)度判斷下一個可執(zhí)行程序。目前我們的Linux內(nèi)核普遍配置的系統(tǒng)軟時間中斷產(chǎn)生的頻率為100Hz,也即每10ms產(chǎn)生一次中斷,那么系統(tǒng)中只有忙計算類(如忙循環(huán))線程的情況下,只有當系統(tǒng)產(chǎn)生軟時間中斷時,CFS才會被調(diào)用來判斷下一個執(zhí)行的線程并使其占有CPU開始執(zhí)行,這個現(xiàn)象看起來就好象是Linux調(diào)度策略簡單的給每個線程分配了10ms的時間片,其實并不是這樣。如果系統(tǒng)中同時有忙計算類的線程和經(jīng)常進行I/O操作類的線程,由于I/O類線程基本處于等待事件的阻塞態(tài)中,執(zhí)行的時間很少,而計算類線程在執(zhí)行的時間會比較長,如果計算類線程正在執(zhí)行時,I/O類線程等待的事件發(fā)生了,CFS馬上就會判斷出I/O類線程在之前時間段內(nèi)執(zhí)行的時間很少,即已使用的CPU占比與分配給他的相比很小,而計算類線程很有可能已經(jīng)超過了分配的CPU占比,那么CFS將會馬上使I/O類的線程占有CPU開始執(zhí)行,如此系統(tǒng)總是能及時響應I/O類線程。

3、SCHED_FIFO和SCHED_RR

SCHED_FIFO和SCHED_RR是實時線程使用的調(diào)度管理算法。SCHED_FIFO即先進先出,處于相同優(yōu)先級的實時線程會根據(jù)進入運行態(tài)的次序依次執(zhí)行。正在執(zhí)行的線程會一直執(zhí)行直到線程阻塞或者其主動調(diào)用調(diào)度線程放棄執(zhí)行,處于此調(diào)度策略下的線程沒有預先分配的時間片,可以永遠執(zhí)行下去。只有擁有更高實時優(yōu)先級且處于SCHED_RR或者SCHED_FIFO管理下的線程能搶占正在運行的實時線程。

SCHED_RR在SCHED_FIFO的基礎上會預先給定線程一個時間片,時間片達到后會使其他相同優(yōu)先級的線程開始執(zhí)行。SCHED_RR的時間片輪詢機制只對同等實時優(yōu)先級的線程有效,更高實時優(yōu)先級的線程總是會搶占正在執(zhí)行的線程,而低優(yōu)先級的線程不能搶占高優(yōu)先級的線程,即使其時間片已到。

實時線程優(yōu)先級高于所有普通線程,如果有實時線程處于運行態(tài),則系統(tǒng)調(diào)度時一定會選擇調(diào)用實時線程;正在運行的實時線程只會被擁有更高實時優(yōu)先級的線程搶占。所以在應用中如果需要將某個線程設置為實時線程,則需要用戶自己確保該線程不會處于忙執(zhí)行而完全占用CPU資源,導致其他普通線程沒法獲得CPU資源而一直被阻塞得不到執(zhí)行,并且需要合理給予優(yōu)先級的值,太高有可能會影響重要系統(tǒng)線程的運行。所有用戶態(tài)線程默認沒有實時優(yōu)先級,都屬于普通線程。

4、相關接口函數(shù)

Linux系統(tǒng)提供了一系列函數(shù),這些函數(shù)可以讓用戶方便的修改線程/進程的優(yōu)先級(包括nice值和real-time priority)、以及修改調(diào)度策略、設置運行線程的CPU核心等。下面簡單介紹一下常用的函數(shù)。

(1)修改nice值

int nice ( int incr )

將調(diào)用進程的nice值增加incr,incr為負數(shù)是提高優(yōu)先級,為正數(shù)時降低優(yōu)先級。成功返回0。

int setpriority ( int which, id_t who, int prio )

將指定的線程/線程組/用戶的nice值設置為prio,whice對應可以取值PRIO_PROCESS、PRIO_PGRP、PRIO_USER,who對應為線程/進程id,組id或者用戶id,prio取值范圍為-20~19。成功返回0,錯誤返回-1。

(2)修改real-time priority以及調(diào)度策略

int pthread_attr_setschedparam (pthread_attr_t *attr, const struct sched_param *param)

設置調(diào)度屬性。對于SCHED_FIFO和SCHED_RR,sched_param值包含 int sched_priority,也即real-time priority。下面所有param定義相同。

int pthread_attr_getschedparam (const pthread_attr_t *attr, struct sched_param *param)

獲取調(diào)度屬性。

int pthread_attr_setschedpolicy (pthread_attr_t *attr, int policy)

設置調(diào)度策略,policy可設置為SCHED_FIFO,SCHED_RR和SCHED_NORMAL。

int pthread_attr_getschedpolicy (const pthread_attr_t *attr, int *policy)

獲取調(diào)度策略。

int sched_setparam (pid_t pid, const struct sched_param *param)

設置pid進程的real-time priority,需要pid進程出具SCHED_FIFO或者SCHED_RR調(diào)度策略管理下。

int sched_getparam(pid_t pid, struct sched_param *param)

獲取real-time priority。

int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param)

設置pid進程的調(diào)度策略以及調(diào)度屬性。

int sched_getscheduler (pid_t pid)

返回pid進程調(diào)度策略。

(3)設置線程在哪個CPU核心上運行

int pthread_setaffinity_np (pthread_t thread, size_t cpusetsize, const cpu_set_t *cpuset)

int pthread_getaffinity_np (pthread_t thread, size_t cpusetsize, cpu_set_t *cpuset)

int sched_setaffinity (pid_t pid, size_t cpusetsize, const cpu_set_t *cpuset)

int sched_getaffinity(pid_t pid, size_t cpusetsize, cpu_set_t *cpuset)

設置/獲取線程可以運行的CPU核心, cpusetsize 可以設置為sizeof(cpu_set_t), cpuset可以用宏CPU_ZERO和CPU_SET設置,函數(shù)設置成功后,線程將只會在設置的CPU核心(比如8核CPU可以設置核心1、3、4)上運行,如果cpuset只指定了一個核心,那么線程將只會在此核心上運行。函數(shù)出錯返回-1,成功返回0。

關于以上函數(shù)以及更多與調(diào)度相關的函數(shù)的詳細信息請參考

http://pubs.opengroup.org/onlinepubs/7908799/xsh/pthread.h.html

http://pubs.opengroup.org/onlinepubs/7908799/xsh/sched.h.html

以及相關函數(shù)的Linux man手冊和其他相關書籍資料。

5、編程示例

下面提供一個示例程序,程序用于展示real-time priority對于進程運行時調(diào)度管理的影響,程序運行于ESM6802(雙核)工控主板上。程序會在主進程中使用fork新建一個進程,然后調(diào)用sched_setscheduler設置子進程的實時優(yōu)先級為30, 同時設置其使用SCHED_FIFO調(diào)度策略,而主進程只有nice值為0 的普通優(yōu)先級。兩個進程主體部分相同,均為在忙循環(huán)中置高然后置低一位GPIO的輸出電平,通過示波器觀察GPIO的狀態(tài),如果進程一直執(zhí)行,則會看到連續(xù)的周期較固定的方波,而如果進程被其他進程搶占,則會看到GPIO的狀態(tài)很長時間沒有發(fā)生變化,以此來展示實時優(yōu)先級對系統(tǒng)調(diào)度的影響。程序部分代碼如下:

int gpio = GPIO6;

structsched_param rt_param = {

.sched_priority = 30 }; //實時優(yōu)先級30

child_pid = fork(); //創(chuàng)建子進程

if(child_pid!=0) //child_pid不等于0為主進程,等于0為子進程

{

if( -1 == sched_setscheduler ( child_pid, SCHED_FIFO, &rt_param ) )

printf("sched_setscheduler failed\n");

//設置子進程實時優(yōu)先級以及調(diào)度算法

printf ( "child_pid = %d\n", child_pid );

gpio = GPIO5; //主進程和子進程操作不同的GPIO

}

printf("Driver esm6800_gpio test\n");

fd = open("/dev/esm6800_gpio", O_RDWR);

printf("open file = %d\n", fd);

rc = GPIO_OutEnable(fd, 0xff); //set GPIO as output

if(rc < 0)

{

printf("GPIO_OutEnable::failed %d\n", rc);

returnrc;

}

for(;;) //無限循環(huán)

{

//忙循環(huán)中置高然后置低gpio輸出電平

rc = GPIO_OutSet(fd, gpio); //使GPIO輸出高電平

if(rc < 0)

{

printf("GPIO_OutSet::failed %d\n", rc);

returnrc;

}

rc = GPIO_OutClear(fd, gpio); //使GPIO輸出低電平

if(rc < 0)

{

printf("GPIO_OutClear::failed %d\n", rc);

returnrc;

}

}

使用示波器查看到的GPIO狀態(tài)如下圖,其中黃色信號為主進程操作的GPIO5,藍色信號為有實時優(yōu)先級的子進程操作的GPIO6:

可以看出藍色信號代表的擁有實時優(yōu)先級的進程一直處于執(zhí)行當中,沒有被其他低優(yōu)先級的進程搶占,而黃色信號代表的普通優(yōu)先級的程序gpio狀態(tài)切換有很明顯的中斷,也即其他進程被搶占而中斷執(zhí)行。此結(jié)果與第一節(jié)介紹的Linux調(diào)度策略一致:實時線程只會被擁有更高實時優(yōu)先級的線程搶占,處于SCHED_FIFO下的實時線程可以無限執(zhí)行。

用戶在實際編程中應該仔細規(guī)劃自己的程序,合理利用系統(tǒng)調(diào)度接口函數(shù),來優(yōu)化自己程序的執(zhí)行效果,同時避免錯誤的使用導致系統(tǒng)正常運行。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    88

    文章

    11576

    瀏覽量

    216675
  • 嵌入式主板
    +關注

    關注

    7

    文章

    6107

    瀏覽量

    36768
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    易華錄入選國家級信息技術應用創(chuàng)新典型解決方案

    近日,工業(yè)和信息化部網(wǎng)絡安全產(chǎn)業(yè)發(fā)展中心(工業(yè)和信息化部信息中心)公布了“2024年信息技術應用創(chuàng)新解決方案”評選結(jié)果。易華錄申報的“基于節(jié)能高效藍光的超級智能存儲解決方案”憑借顯著的
    的頭像 發(fā)表于 08-07 15:35 ?1072次閱讀

    信息技術應用產(chǎn)學協(xié)同人才培養(yǎng)行動計劃”正式發(fā)布,誠邁科技入選首批參與單位

    設在中國軟件評測中心。誠邁科技作為信創(chuàng)技術先鋒企業(yè),受邀成為首批參與單位,與國內(nèi)頂尖高校、領軍企業(yè)和權威機構(gòu)攜手,共同打造具有中國特色的信息技術人才培養(yǎng)新范式,為
    的頭像 發(fā)表于 08-06 17:29 ?1145次閱讀
    “<b class='flag-5'>信息技術</b>應用產(chǎn)學協(xié)同人才培養(yǎng)行動計劃”正式發(fā)布,誠邁科技入選首批參與單位

    佛瑞亞如何通過信息技術推動業(yè)務增長

    在數(shù)字化、信息化的浪潮下,信息技術已經(jīng)不僅是后臺工具,更成為驅(qū)動企業(yè)發(fā)展的關鍵力量。本期Women Inspiring Mobility,我們采訪了佛瑞亞中國區(qū)信息技術總監(jiān)馬瑛,了解她和團隊如何將
    的頭像 發(fā)表于 07-29 14:00 ?580次閱讀

    飛騰主板為信創(chuàng)產(chǎn)業(yè)發(fā)展提高硬實力

    信息技術飛速發(fā)展的當下,信創(chuàng)產(chǎn)業(yè)已成為我國實現(xiàn)科技自立自強、保障國家信息安全的關鍵領域。信創(chuàng),即信息技術應用創(chuàng)新,其核心目標是實現(xiàn)
    的頭像 發(fā)表于 07-22 18:20 ?434次閱讀

    DEKRA德凱成為沙特通信和信息技術設備技術法規(guī)認證機構(gòu)

    近日,DEKRA德凱成功獲得沙特標準、計量和質(zhì)量組織(SASO)認可,正式成為沙特通信和信息技術設備技術法規(guī)(Technical Regulation for Communications
    的頭像 發(fā)表于 07-15 14:27 ?571次閱讀

    科普|信創(chuàng)是什么?一文讀懂“信息技術應用創(chuàng)新”戰(zhàn)略

    什么是信創(chuàng)?信創(chuàng),即“信息技術應用創(chuàng)新”,是國家推動IT系統(tǒng)自主可控、安全可控的重要戰(zhàn)略工程。它不僅是技術層面的創(chuàng)新,更承載著保障國家網(wǎng)絡安
    的頭像 發(fā)表于 06-13 10:06 ?5040次閱讀
    科普|信<b class='flag-5'>創(chuàng)</b>是什么?一文讀懂“<b class='flag-5'>信息技術</b>應用創(chuàng)新”戰(zhàn)略

    【啟揚方案】基于RK3588的救護車智能調(diào)度系統(tǒng)應用解決方案

    ,結(jié)合大數(shù)據(jù)、人工智能、和優(yōu)化算法的救護車智能調(diào)度系統(tǒng)應運而生,通過快速、精準、高效響應與資源優(yōu)化,全面提升緊急醫(yī)療救援服務水平。救護車智能調(diào)度系統(tǒng)通過
    的頭像 發(fā)表于 06-12 17:26 ?444次閱讀
    【啟揚方案】基于RK3588的救護車智能<b class='flag-5'>調(diào)度</b><b class='flag-5'>系統(tǒng)</b>應用解決方案

    安全生產(chǎn)調(diào)度管理系統(tǒng)的核心功能模塊

    安全生產(chǎn)調(diào)度管理系統(tǒng)是運用現(xiàn)代信息技術構(gòu)建的智能化管理平臺,旨在實現(xiàn)生產(chǎn)安全風險的全面管控和應急資源的優(yōu)化調(diào)度。該系統(tǒng)通過整合物聯(lián)網(wǎng)、大數(shù)據(jù)
    的頭像 發(fā)表于 05-16 15:25 ?328次閱讀

    龍芯中科榮獲2024年度信息技術應用創(chuàng)新工作委員會卓越貢獻成員單位

    光南,工業(yè)和信息化部信息技術發(fā)展司系統(tǒng)創(chuàng)新應用處處長孟洪濤,中國電子工業(yè)標準化技術協(xié)會執(zhí)行秘書長朵晶,信創(chuàng)工委會秘書長趙成志等出席。會上,龍
    的頭像 發(fā)表于 01-23 10:50 ?871次閱讀

    芯盛智能榮獲2024年信息技術應用創(chuàng)新工作委員會卓越貢獻成員單位

    日前,中國電子工業(yè)標準化技術協(xié)會信息技術應用創(chuàng)新工作委員會(以下簡稱 “信創(chuàng)工委會”)2024 年度總結(jié)座談會于北京隆重舉行。此次會議對在信創(chuàng)工作中作出突出貢獻的成員單位予以表彰。江蘇
    的頭像 發(fā)表于 01-20 09:56 ?832次閱讀

    飛騰助力首屆教育信息技術應用創(chuàng)新大賽圓滿落幕

    近日,由中國教育技術協(xié)會主辦,教育部教育管理信息中心教育信創(chuàng)實驗室、公安部第三研究所、中國電子工業(yè)標準化技術協(xié)會信創(chuàng)工委會支持,北京航空航天
    的頭像 發(fā)表于 12-24 09:57 ?672次閱讀

    有方科技參編的信息技術團體標準發(fā)布

    近日,有方科技參編的《信息技術產(chǎn)品供應鏈成熟度 共性指標 第1部分:企業(yè)背景評價》《信息技術產(chǎn)品供應鏈成熟度 共性指標 第2部分:技術掌控評價》《信息技術產(chǎn)品供應鏈成熟度 共性指標 第
    的頭像 發(fā)表于 12-23 10:44 ?795次閱讀

    龍芯中科助力2024首屆教育信息技術應用創(chuàng)新大賽成功舉辦

    近日,2024首屆教育信息技術應用創(chuàng)新大賽在北京航空航天大學成功舉辦。本次大賽由中國教育技術協(xié)會主辦,教育信創(chuàng)實驗室、公安部第三研究所、中國電子工業(yè)標準化技術協(xié)會信
    的頭像 發(fā)表于 12-19 17:02 ?714次閱讀

    全志T113-S3板載Linux系統(tǒng)信息查詢

    包含多個內(nèi)置命令,可幫助我們熟悉正在使用的軟件和硬件平臺。為了全面了解如何查看Linux系統(tǒng)的各種信息,下面的內(nèi)容將詳細介紹各個方面的查詢命令和方法。產(chǎn)品簡介眺望電子E
    的頭像 發(fā)表于 11-22 01:07 ?1394次閱讀
    全志T113-S3板載<b class='flag-5'>Linux</b><b class='flag-5'>系統(tǒng)</b><b class='flag-5'>信息</b>查詢

    中科創(chuàng)達榮獲2024年軟件和信息技術服務優(yōu)秀企業(yè)

    及前百家企業(yè)”名單。中科創(chuàng)達憑借非凡的技術實力與持續(xù)的創(chuàng)新能力,成功入選“2024年度軟件和信息技術服務競爭力百強企業(yè)”以及“2024年軟件和信息技術服務優(yōu)秀企業(yè)”。
    的頭像 發(fā)表于 10-30 11:44 ?1254次閱讀