공노비는 신역(身役)을 지는 방식에 따라 해당 관서에 직접 노동력을 바치는 입역 노비(入役奴婢)와 입역 대신 공물(貢物)을 바치는 납공노비(納貢奴婢)로 구별된다. 서울의 중앙 각사 운영에 필요한 노동력은 기본적으로 서울에 사는 노비[경거노비(京居奴婢)]를 2번(番)으로 나누어 1개월씩 사역하는 방식을 통해 충당하였다. 그러나 이것만으로는 노동력이 부족하였으므로 지방에 거주하는 노비[외방노비(外方奴婢)]를 7번(番)으로 나누어 6개월씩 사역시키기도 하였다. 이렇게 지방의 노비를 서울에 올라오게 해 노동력을 활용하는 제도를 ‘노비선상제(奴婢選上制)’라 한다. 선상 대상이 된 노비들은 신역의 의미에서 노동력을 바치는 것이었으므로, 선상에 드는 비용은 원칙적으로 스스로 부담하였고 생활 보조의 의미에서 국가로부터 2명의 봉족(奉足)을 지급받았다. 봉족에게서는 1년에 면포 1필, 정포 1필을 거두는 것이 허용되었다.
노비 선상의 번차(番次)는 세종조에는 삼번(三番)이었으나, 1472년(성종 3)에는 오번(五番), 1473년(성종 4) 정월에는 칠번(七番)으로 운영되었던 것으로 보인다. 『경국대전(經國大典)』에는 칠번으로 운영되는 방식이 채택되었다. 선상의 번차가 증가한 것은 외방노비들이 6개월간 서울에 올라와 역을 지는 데서 발생하는 경제적 부담 및 생업을 포기한 데서 발생한 손실을 줄여주기 위해서였다. 선상노의 차정은 형조가 경거노비의 상황을 파악한 후 선상의 숫자와 대상을 확정하여 왕에게 보고하면, 각 지방의 수령이 서리를 통해 분정된 선상노를 해당 각사로 직송하는 방식으로 이루어졌다.
각사에 올려 보내진 선상노는 대부분 각사의 차비노(差備奴), 근수노(跟隨奴)의 역할을 맡았다. 각사 차비노는 고직(庫直)·방직(房直)·성상(城上) 등의 임무를 맡아 기물을 관리하였으며, 관서의 성격에 따라 관서의 고유 업무를 수행하거나 관원의 공궤(供饋) 등을 책임지기도 하였다. 한편 근수노는 종친이나 각사 소속 관원에게 배당된 사노(私奴)와 같은 존재로 소속 관원의 관품 및 인원수에 비례하여 지급되었다. 『경국대전』에서 규정한 차비노와 근수노의 정원은 각각 2,416명, 1,480명이며, 이후 『대전속록(大典續錄)』에서는 각각 306명, 39명이 증액된 모습을 보이고 있다.
한편 노비선상제는 노동력을 무상으로 장기간 징발하는 제도였으므로, 정부는 노비의 재생산 유지를 위한 대책을 마련하였다. 나이가 70세 이상이거나 자손을 많이 둔 노비의 경우, 그 소생 중 한 명 혹은 전부를 시정(侍丁, 노부모를 봉양하기 위하여 군역을 면제 받은 장정)으로 삼아 신역을 면제해주었으며 비(婢)가 출산하였을 때 휴가를 주었다. 또한 각기 다른 관사에서 일하는 부모처자를 한 관사에 소속시키는 조치를 취하기도 하였다.
정부의 노비 재생산 조치에도 불구하고 선상제는 선상노가 일정 기간 동안 생업에 종사할 수 없게 한다는 점에서 무거운 부담으로 간주되었다. 이에 따라 선상 의무가 있는 부유한 외방노비는 경거노비의 봉족(奉足)이 되어 선상을 면제받고자 하였으며, 그 결과 경제력이 없는 노비들만 선상하는 폐단이 발생하게 되었다.
각사에서 선상노비가 제대로 보충되지 않는 책임을 경주인(京主人)에게 돌리면서 경주인은 월리(月利)를 내 그 역을 충당하고 해당 고을에서 배로 징수하기도 하였다. 이에 대해 외방의 각사 노비들은 투탁(投託)·이역(移役)·대립(代立)·도망 등의 방식으로 선상을 회피하였다. 그 결과 성종대에는 선상노들이 값을 내고 다른 사람을 사서 서울에 올려 보내는 대립이 공식적으로 인정되었으며 선상대립가도 공정 및 관수관급제(官受官給制)가 시행되었다. 이때 선상대립가는 1개월에 2필을 넘을 수 없도록 규정하여 6개월간의 대립가는 12필 이하였다. 그러나 시세에 비해 가벼워 대립가가 치솟게 되자 다시 대립이 금지되었다. 이후 중종대에 이르러 선상대립이 공인되었으며 대립가는 1개월 당 상목포(常木布) 5필로 규정되었다.
임진왜란을 겪고 난 뒤에는 많은 노비의 도고(逃故)로 인해 노비 선상제가 제대로 시행되지 못하면서 기존에 선상노가 수행하던 각사의 업무를 상번군과 공물주인이 대신하는 실정에 이르렀다. 따라서 이후에는 호조, 병조 및 중앙 각사에서 서울 사람[경인(京人)]에게 직접 돈을 주고 고립(雇立) 하는 형태로 노동력을 충당하게 되었다. 이러한 고립의 과정을 거치면서 노비의 신역 부담은 17세기 이후 노동력 대신 신공(身貢)을 바치는 형태가 주를 이루게 되었다.
조선은 공노비를 존속시킴으로써 그들의 노동력과 경제적 능력을 직접 국가 운영에 활용하고자 하였으며 선상제는 이러한 기획 아래 성립하였다. 그러나 직접 서울까지 와서 노동력을 바치는데 따르는 비용 부담으로 인하여 노비선상제는 점차 대립, 고립의 양상을 띠게 되었다. 이는 양인에게 부과된 신역이었던 군역이 대립, 방군수포(放軍收布), 군포 수납(軍布收納)의 형태로 바뀌었던 것과 맥락을 같이 하는 대목이다. 따라서 선상노비제의 운영과 변화를 살펴보는 것은 조선의 역체제 운영의 전반적인 양상을 추적하는데 있어 중요한 단서를 제공해준다고 할 수 있다.